本文介绍使用Prometheus和Grafana监控Linux服务器性能的方法。安装参考文章:在RHEL 8系统上安装Prometheus 2.6.0的步骤、在RHEL 8系统上安装Grafana 5.4.2的步骤。
一、添加Prometheus系统用户 sudo groupadd --system prometheus sudo useradd -s /sbin/nologin --system -g prometheus prometheus 我们添加了一个名为prometheus的系统用户,其默认组为prometheus,此用户帐户将用于运行nod导出程序服务,它是安全的,因为它无法访问交互式shell和主目录。
二、下载并安装Prometheus 在终端下: wget https://github.com/prometheus/node_exporter/releases/download/v0.17.0/node_exporter-0.17.0.linux-amd64.tar.gz tar xvf node_exporter-0.17.0.linux-amd64.tar.gz sudo mv node_exporter-0.17.0.linux-amd64/node_exporter /usr/local/bin/ rm -f node_exporter-0.17.0.linux-amd64.tar.gz rm -rf node_exporter-0.17.0.linux-amd64 可以使用以下命令确认安装的版本: # node_exporter --version 返回的信息为0.17.0版本即为安装成功。
三、配置Prometheus节点导出器systemd/Init脚本 通过提供--collector.<name>标志来启用收集器。 默认情况下启用的收集器可以通过提供--no-collector.<name>标志来禁用: sudo vim /etc/systemd/system/node_exporter.service 添加以下内容: [Unit] Description=Prometheus Documentation=https://github.com/prometheus/node_exporter Wants=network-online.target After=network-online.target [Service] Type=simple User=prometheus Group=prometheus ExecReload=/bin/kill -HUP $MAINPID ExecStart=/usr/local/bin/node_exporter \ --collector.cpu \ --collector.diskstats \ --collector.filesystem \ --collector.loadavg \ --collector.meminfo \ --collector.filefd \ --collector.netdev \ --collector.stat \ --collector.netstat \ --collector.systemd \ --collector.uname \ --collector.vmstat \ --collector.time \ --collector.mdadm \ --collector.zfs \ --collector.tcpstat \ --collector.bonding \ --collector.hwmon \ --collector.arp \ --web.listen-address=:9100 \ --web.telemetry-path="/metrics" SyslogIdentifier=node_exporter Restart=always [Install] WantedBy=multi-user.target 启动该服务并使其在启动时启动: sudo systemctl start node_exporter sudo systemctl enable node_exporter 下面需要配置防火墙,如果你的服务器上有活动防火墙,例如firewalld、ufw,打开端口9100: sudo ufw allow 9100 参考:在Ubuntu 18.04系统中使用UFW设置防火墙。 对于CentOS 7系统,请使用firewalld: sudo firewall-cmd --add-port=9100/tcp --permanent sudo firewall-cmd --reload 对于像CentOS 6这样的Init Linux系统,你可以使用daemonize在后台启动服务。 安装daemonize: sudo yum install daemonize sudo apt-get install daemonize 安装后,创建node_exporter init脚本: sudo vim /etc/init.d/node_exporter 添加以下脚本: #!/bin/bash # Author: Josphat Mutai, kiplangatmtai@gmail.com , https://github.com/jmutai # node_exporter This shell script takes care of starting and stopping Prometheus apache exporter # # chkconfig: 2345 80 80 # description: Prometheus apache exporter start script # processname: node_exporter # pidfile: /var/run/node_exporter.pid # Source function library. . /etc/rc.d/init.d/functions RETVAL=0 PROGNAME=node_exporter PROG=/usr/local/bin/${PROGNAME} RUNAS=prometheus LOCKFILE=/var/lock/subsys/${PROGNAME} PIDFILE=/var/run/${PROGNAME}.pid LOGFILE=/var/log/${PROGNAME}.log DAEMON_SYSCONFIG=/etc/sysconfig/${PROGNAME} # GO CPU core Limit #GOMAXPROCS=$(grep -c ^processor /proc/cpuinfo) GOMAXPROCS=1 # Source config . ${DAEMON_SYSCONFIG} start() { if [[ -f $PIDFILE ]] > /dev/null; then echo "node_exporter is already running" exit 0 fi echo -n "Starting node_exporter service…" daemonize -u ${USER} -p ${PIDFILE} -l ${LOCKFILE} -a -e ${LOGFILE} -o ${LOGFILE} ${PROG} ${ARGS} RETVAL=$? echo "" return $RETVAL } stop() { if [ ! -f "$PIDFILE" ] || ! kill -0 $(cat "$PIDFILE"); then echo "Service not running" return 1 fi echo 'Stopping service…' #kill -15 $(cat "$PIDFILE") && rm -f "$PIDFILE" killproc -p ${PIDFILE} -d 10 ${PROG} RETVAL=$? echo [ $RETVAL = 0 ] && rm -f ${LOCKFILE} ${PIDFILE} return $RETVAL } status() { if [ -f "$PIDFILE" ] || kill -0 $(cat "$PIDFILE"); then echo "apache exporter service running..." echo "Service PID: `cat $PIDFILE`" else echo "Service not running" fi RETVAL=$? return $RETVAL } # Call function case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status ;; *) echo "Usage: $0 {start|stop|restart}" exit 2 esac 创建参数配置文件: sudo vim /etc/sysconfig/node_exporter 增加以下内容: ARGS="--collector.cpu \ --collector.diskstats \ --collector.filesystem \ --collector.loadavg \ --collector.meminfo \ --collector.filefd \ --collector.netdev \ --collector.stat \ --collector.netstat \ --collector.systemd \ --collector.uname \ --collector.vmstat \ --collector.time \ --collector.mdadm \ --collector.xfs \ --collector.zfs \ --collector.tcpstat \ --collector.bonding \ --collector.hwmon \ --collector.arp \ --web.listen-address=:9100 \ --web.telemetry-path="/metrics" 测试脚本: # /etc/init.d/node_exporter Usage: /etc/init.d/node_exporter {start|stop|restart}
四、启动Prometheus节点导出器服务 对于systemd,请开始使用: sudo systemctl start node_exporter sudo systemctl enable node_exporter 对于Init系统使用: sudo /etc/init.d/node_exporter start sudo chkconfig node_exporter on 你可以验证使用: $ sudo /etc/init.d/node_exporter status apache exporter service running... Service PID: 1970 $ sudo chkconfig --list | grep node_exporter node_exporter 0:off 1:off 2:on 3:on 4:on 5:on 6:off $ sudo ss -tunelp | grep 9100 tcp LISTEN 0 128 :::9100 :::* users:(("node_exporter",pid=16105,fd=3)) uid:997 ino:193468 sk:ffff8a0a76f52a80 v6only:0 <->
五、将导出器作业添加到Prometheus 向Prometheus服务器添加作业以抓取指标,编辑/etc/prometheus/prometheus.yml: # Linux Servers - job_name: apache-linux-server1 static_configs: - targets: ['10.1.10.20:9100'] labels: alias: server1 - job_name: apache-linux-server2 static_configs: - targets: ['10.1.10.21:9100'] labels: alias: server2 重启prometheus服务以开始抓取: sudo systemctl restart prometheus 从Prometheus服务器测试对端口9100的访问: $ telnet 10.1.10.20 9100 Trying 10.1.10.20... Connected to 10.1.10.20. Escape character is '^]'. ^]
六、将仪表板添加到Grafana 你可以创建自己的Grafana仪表板,也可以从社区共享仪表板集合中导入。 出于演示目的,我们将使用ID为159的第一个仪表板(https://grafana.com/dashboards/159)。 将Prometheus数据源添加到Grafana,通过导航到仪表板>导入导入Apache Grafana仪表板,使用159表示Grafana仪表板ID:
为其指定一个描述性名称,然后选择之前添加的Prometheus数据源:
单击导入按钮开始使用仪表板,几分钟后,指标应该开始显示,这表示成功了:
相关主题 |