Linux云盘算SRE-第二十一周

[复制链接]
发表于 2025-10-9 20:03:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
构建单节点prometheus,摆设node exporter和mongo exporter。构建kibana大盘。包罗主机PU利用率,主机MEM利用率,主机网络包速率。mongo db大盘,包罗节点在线状态,读操纵耽误等

一、实验环境预备

- 节点信息:
  - node0 (10.0.0.100):Prometheus、Grafana、node exporter
  - node1 (10.0.0.110):node exporter
  - node2 (10.0.0.120):MongoDB、mongo exporter
二、

#1. 安装 Prometheus 和 Grafana
  1. 操作步骤:
  2. #在 node0 上安装 Prometheus(官方二进制包)
  3. wget https://github.com/prometheus/prometheus/releases/download/v2.53.3/prometheus-2.53.3.linux-amd64.tar.gz
  4. tar -xvf prometheus-2.53.3.linux-amd64.tar.gz
  5. mv prometheus-2.53.3.linux-amd64 /opt/prometheus
  6. ln -s /opt/prometheus/prometheus /usr/local/bin/
  7. ln -s /opt/prometheus/promtool /usr/local/bin/
  8. #浏览器访问:
  9. http://10.0.0.100:9090/
  10. #创建service服务文件
  11. tee /etc/systemd/system/prometheus.service <<EOF
  12. [Unit]
  13. Description=Prometheus Server
  14. Documentation=https://prometheus.io/docs/introduction/overview/
  15. After=network.target
  16. [Service]
  17. Type=simple
  18. User=root
  19. Group=root
  20. ExecStart=/opt/prometheus/prometheus \
  21.   --config.file=/opt/prometheus/prometheus.yml \
  22.   --storage.tsdb.path=/opt/prometheus/data
  23. ExecReload=/bin/kill -HUP \$MAINPID
  24. Restart=on-failure
  25. [Install]
  26. WantedBy=multi-user.target
  27. EOF
  28. #重新加载 systemd 管理器配置
  29. systemctl daemon-reload
  30. #启动并设置开机自启
  31. systemctl start prometheus
  32. systemctl enable prometheus
  33. #安装 Grafana(官方仓库)
  34. curl -fsSL https://apt.grafana.com/gpg.key | gpg --dearmor -o /usr/share/keyrings/grafana.gpg
  35. echo "deb [signed-by=/usr/share/keyrings/grafana.gpg] https://apt.grafana.com stable main" | tee /etc/apt/sources.list.d/grafana.list
  36. apt update && apt install -y grafana
  37. systemctl enable --now grafana-server
复制代码
#2. 安装 node exporter

脚本 `install_node_exporter.sh`:
  1. #!/bin/bash
  2. NODE_EXPORTER_VERSION=1.9.0
  3. NODE_EXPORTER_FILE="node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64.tar.gz"
  4. NODE_EXPORTER_URL=https://github.com/prometheus/node_exporter/releases/download/v${NODE_EXPORTER_VERSION}/${NODE_EXPORTER_FILE}
  5. INSTALL_DIR=/usr/local
  6. HOST=`hostname -I|awk '{print $1}'`
  7. . /etc/os-release
  8. msg_error() {
  9.   echo -e "\033[1;31m$1\033[0m"
  10. }
  11. msg_info() {
  12.   echo -e "\033[1;32m$1\033[0m"
  13. }
  14. msg_warn() {
  15.   echo -e "\033[1;33m$1\033[0m"
  16. }
  17. color () {
  18.     RES_COL=60
  19.     MOVE_TO_COL="echo -en \\033[${RES_COL}G"
  20.     SETCOLOR_SUCCESS="echo -en \\033[1;32m"
  21.     SETCOLOR_FAILURE="echo -en \\033[1;31m"
  22.     SETCOLOR_WARNING="echo -en \\033[1;33m"
  23.     SETCOLOR_NORMAL="echo -en \E[0m"
  24.     echo -n "$1" && $MOVE_TO_COL
  25.     echo -n "["
  26.     if [ $2 = "success" -o $2 = "0" ] ;then
  27.         ${SETCOLOR_SUCCESS}
  28.         echo -n $"  OK  "   
  29.     elif [ $2 = "failure" -o $2 = "1"  ] ;then
  30.         ${SETCOLOR_FAILURE}
  31.         echo -n $"FAILED"
  32.     else
  33.         ${SETCOLOR_WARNING}
  34.         echo -n $"WARNING"
  35.     fi
  36.     ${SETCOLOR_NORMAL}
  37.     echo -n "]"
  38.     echo
  39. }
  40. install_node_exporter () {
  41.     if [ ! -f  ${NODE_EXPORTER_FILE} ] ;then
  42.         wget ${NODE_EXPORTER_URL} ||  { color "下载失败!" 1 ; exit ; }
  43.     fi
  44.     [ -d $INSTALL_DIR ] || mkdir -p $INSTALL_DIR
  45.     tar xf ${NODE_EXPORTER_FILE} -C $INSTALL_DIR
  46.     cd $INSTALL_DIR &&  ln -s node_exporter-${NODE_EXPORTER_VERSION}.linux-amd64 node_exporter
  47.     mkdir -p $INSTALL_DIR/node_exporter/bin
  48.     cd $INSTALL_DIR/node_exporter &&  mv node_exporter bin/
  49.         id prometheus &> /dev/null || useradd -r -s /sbin/nologin prometheus
  50.         chown -R prometheus.prometheus ${INSTALL_DIR}/node_exporter/
  51.        
  52.       
  53.     cat >  /etc/profile.d/node_exporter.sh <<EOF
  54. export NODE_EXPORTER_HOME=${INSTALL_DIR}/node_exporter
  55. export PATH=\${NODE_EXPORTER_HOME}/bin:\$PATH
  56. EOF
  57. }
  58. node_exporter_service () {
  59.     cat > /lib/systemd/system/node_exporter.service <<EOF
  60. [Unit]
  61. Description=Prometheus Node Exporter
  62. After=network.target
  63. [Service]
  64. Type=simple
  65. ExecStart=$INSTALL_DIR/node_exporter/bin/node_exporter
  66. ExecReload=/bin/kill -HUP \$MAINPID
  67. Restart=on-failure
  68. User=prometheus
  69. Group=prometheus
  70. [Install]
  71. WantedBy=multi-user.target
  72. EOF
  73.     systemctl daemon-reload
  74.     systemctl enable --now node_exporter.service
  75. }
  76. start_node_exporter() {
  77.     systemctl is-active node_exporter.service
  78.     if [ $?  -eq 0 ];then  
  79.         echo
  80.         color "node_exporter 安装完成!" 0
  81.         echo "-------------------------------------------------------------------"
  82.         echo -e "访问链接: \c"
  83.         msg_info "http://$HOST:9100/metrics"
  84.     else
  85.         color "node_exporter 安装失败!" 1
  86.         exit
  87.     fi
  88. }
  89. install_node_exporter
  90. node_exporter_service
  91. start_node_exporter
复制代码
摆设下令:
  1. #在 node0、node1、node2 上执行
  2. bash install_node_exporter.sh
  3. scp install_node_exporter.sh node1:/root
  4. scp install_node_exporter.sh node2:/root
  5. ssh node1 "bash install_node_exporter.sh"
  6. ssh node2 "bash install_node_exporter.sh"
复制代码
#3. 安装 MongoDB 和 mongo exporter

操纵步调:
  1. #在 node2 上安装 MongoDB
  2. curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor
  3. echo "deb [ arch=amd64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | tee /etc/apt/sources.list.d/mongodb-org-8.0.list
  4. apt update && apt install -y mongodb-org
  5. systemctl enable --now mongod
  6. #配置 MongoDB 认证
  7. mongosh admin --eval 'db.createUser({ user: "admin", pwd: "123456", roles: [ { role: "root", db: "admin" } ] })'
  8. sed -i '/^security:/a\  authorization: enabled' /etc/mongod.conf
  9. systemctl restart mongod
  10. #安装 mongo exporter
  11. wget https://github.com/percona/mongodb_exporter/releases/download/v0.43.1/mongodb_exporter-0.43.1.linux-amd64.tar.gz
  12. tar -xvf mongodb_exporter-0.43.1.linux-amd64.tar.gz
  13. mv mongodb_exporter-0.43.1.linux-amd64 /opt/mongodb_exporter
  14. chown -R prometheus.prometheus /opt/mongodb_exporter
  15. #创建服务文件
  16. cat > /lib/systemd/system/mongodb_exporter.service <<EOF
  17. [Unit]
  18. Description=MongoDB Exporter
  19. After=network.target
  20. [Service]
  21. Type=simple
  22. ExecStart=/opt/mongodb_exporter/mongodb_exporter --mongodb.uri=admin:123456@localhost:27017
  23. User=prometheus
  24. Group=prometheus
  25. Restart=on-failure
  26. [Install]
  27. WantedBy=multi-user.target
  28. EOF
  29. systemctl daemon-reload
  30. systemctl enable --now mongodb_exporter.service
复制代码
#4. 设置 Prometheus 抓取规则
  1. #修改 Prometheus 配置文件
  2. vim /opt/prometheus/prometheus.yml
  3. scrape_configs:
  4.   - job_name: 'node'
  5.     static_configs:
  6.       - targets: ['10.0.0.100:9100', '10.0.0.110:9100', '10.0.0.120:9100']
  7.   - job_name: 'mongodb'
  8.     static_configs:
  9.       - targets: ['10.0.0.120:9216']
  10. #检查配置文件语法
  11. promtool check config /opt/prometheus/prometheus.yml
  12. #重启 Prometheus
  13. systemctl restart prometheus
复制代码
#5. 设置 Grafana 仪表盘

1. 登录 Grafana:
   http://10.0.0.100:3000 (默认账号/暗码:admin/admin)(新暗码123456)

2. 添加 Prometheus 数据源:
   - 名称:Prometheus
   - URL:`http://10.0.0.100:9090`

3. 导入仪表盘:
   - Node Exporter 仪表盘(ID: 1860):
     导入 ID 1860,包罗 CPU、内存、网络指标。
     
   - MongoDB 仪表盘(ID: 13387):
     导入 ID 13387,包罗节点状态、读写耽误等指标。    

4. 自界说设置:
  1.    - 网络包速度:
  2.      rate(node_network_receive_bytes_total{device!~"lo|tun.*"}[5m])
  3.      rate(node_network_transmit_bytes_total{device!~"lo|tun.*"}[5m])
  4.      
  5.    - MongoDB 读延迟:
  6.      mongodb_cmd_duration_seconds_count{operation="find"}
复制代码


三、验证与测试

1. Prometheus 验证:
  curl http://10.0.0.100:9090/targets
  应表现全部 exporter 状态为 `UP`。
2. Grafana 验证:
   - 查抄仪表盘数据是否正常表现。
   - 确认 CPU、内存、网络、MongoDB 指标是否更新。
   - Node Exporter 仪表盘(ID 1860)表现 CPU、内存、网络指标。
   - MongoDB 仪表盘(ID 13387)表现节点状态、读写耽误等。

回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表