安裝并運(yùn)行 node_exporter
- 下載?node_exporter
- 解壓到指定 /app/exporter
- 編寫管理腳本
control_node_exporter.sh
,并給予權(quán)限?chmod + x control_node_exporter.sh
,腳本內(nèi)容如下:#!/bin/bash PID_FILE="node_exporter.pid" LOG_FILE="node_exporter.log" ###這個(gè)路徑是解壓以后這個(gè)文件的路徑,這個(gè)根據(jù)每個(gè)人路徑不同,填入的也不同 CMD="/opt/module/exporter/node_exporter" function start { nohup $CMD > $LOG_FILE 2>&1 & echo $! > $PID_FILE echo "Started Node Exporter, pid: $(cat $PID_FILE)" } function stop { kill $(cat $PID_FILE) rm $PID_FILE echo "Stopped Node Exporter" } function status { if [ -f $PID_FILE ]; then pid=$(cat $PID_FILE) if ps -p $pid > /dev/null; then echo "Node Exporter is running, pid: $pid" echo "Start time: $(ps -p $pid -o lstart=)" echo "Running time: $(ps -p $pid -o etime=)" echo "Started by user: $(ps -p $pid -o user=)" else echo "Node Exporter is not running" fi else echo "Node Exporter is not running" fi } case $1 in "start") start ;; "stop") stop ;; "status") status ;; *) echo "Usage: $0 {start|stop|status}" ;; esac
執(zhí)行命令:
?./control_node_exporter.sh start
驗(yàn)證 node_exporter 是否啟動(dòng)成功:
- 查看同級(jí)目錄下的 node_exporter.log 日志
- 瀏覽器訪問?
host:9100
,是否看到下面的頁面
出現(xiàn)如上的界面,表示此部分的部署成功。
安裝并運(yùn)行 kafka_exporter
- 下載?kafka_exporter
- 解壓到指定 /app/exporter
- 編寫啟動(dòng)腳本 start.sh,并給予權(quán)限?
chmod + x start.sh
,腳本內(nèi)容如下:#!/bin/bash nohup /app/exporter/kafka_exporter-1.7.0.linux-amd64/kafka_exporter --kafka.server=two:9092 --kafka.server=three:9092 --kafka.server=four:9092 > kafka_exporter.log &
其中?
--kafka.server=two:9092 --kafka.server=three:9092 --kafka.server=four:9092
?的作用是指定 Kafka 的集群地址(注意:一定要寫上所有的節(jié)點(diǎn)地址)
執(zhí)行命令?./start.sh
?啟動(dòng) kafka_exporter.
驗(yàn)證 kafka_exporter 是否啟動(dòng)成功:
- 查看同級(jí)目錄下的 kafka_exporter.log 日志
- 瀏覽器訪問?
host:9308
,是否看到下面的頁面
安裝并運(yùn)行 Prometheus
- 下載?Prometheus
- 解壓到 /opt/module/exporter/Prometheus 目錄,然后進(jìn)入解壓后的目錄,編寫配置文件
promethues.yml
。# my global config global: scrape_interval: 15s # Set the scrape interval to every 15 seconds. Default is every 1 minute. evaluation_interval: 15s # Evaluate rules every 15 seconds. The default is every 1 minute. # scrape_timeout is set to the global default (10s). # Alertmanager configuration alerting: alertmanagers: - static_configs: - targets: # - alertmanager:9093 # Load rules once and periodically evaluate them according to the global 'evaluation_interval'. rule_files: # - "first_rules.yml" # - "second_rules.yml" # A scrape configuration containing exactly one endpoint to scrape: # Here it's Prometheus itself. scrape_configs: # The job name is added as a label `job=<job_name>` to any timeseries scraped from this config. - job_name: "prometheus" # metrics_path defaults to '/metrics' # scheme defaults to 'http'. static_configs: - targets: ["localhost:9090"] # 新增部分: node_exporter 本機(jī)服務(wù)器監(jiān)控 - job_name: 'node' static_configs: - targets: ['localhost:9100'] # 新增部分: kafka_exporter kafka集群監(jiān)控 - job_name: 'kafka' static_configs: - targets: ['localhost:9308']
- 編寫管理腳本
control_prometheus.sh
,并給予執(zhí)行權(quán)限?chmod +x control_prometheus.sh
,腳本內(nèi)容如下:#!/bin/bash PID_FILE="prometheus.pid" LOG_FILE="prometheus.log" #根據(jù)自己目錄情況定義 CMD="/opt/module/exporter/Prometheus/prometheus-2.49.0-rc.1.linux-amd64/prometheus --config.file=prometheus.yml" function start { nohup $CMD > $LOG_FILE 2>&1 & echo $! > $PID_FILE echo "Started Prometheus, pid: $(cat $PID_FILE)" } function stop { kill $(cat $PID_FILE) rm $PID_FILE echo "Stopped Prometheus" } function status { if [ -f $PID_FILE ]; then pid=$(cat $PID_FILE) if ps -p $pid > /dev/null; then echo "Prometheus is running, pid: $pid" echo "Start time: $(ps -p $pid -o lstart=)" echo "Running time: $(ps -p $pid -o etime=)" echo "Started by user: $(ps -p $pid -o user=)" else echo "Prometheus is not running" fi else echo "Prometheus is not running" fi } case $1 in "start") start ;; "stop") stop ;; "status") status ;; *) echo "Usage: $0 {start|stop|status}" ;; esac
驗(yàn)證 prometheus 是否啟動(dòng)成功:
-
tail -fn 1000 prometheus.log
。 - 瀏覽器打開?
http://host:9090
,是否可以看到 prometheus 的 web ui?
?安裝運(yùn)行并配置 grafana (重點(diǎn))
- 是一個(gè)開源的度量分析和可視化工具,可以通過將采集的數(shù)據(jù)分析、查詢,然后進(jìn)行可視化的展示,并能實(shí)現(xiàn)報(bào)警。
- 參考官網(wǎng)地址:Run Grafana Docker image | Grafana documentation
docker的安裝?
通過命令行一鍵安裝
curl -fsSL https://get.docker.com/ | sh ;
#如果沒有curl ,需要先安裝curl
apt install curl;
docker的開啟 和停止命令:
sudo systemctl start docker # 開啟
sudo systemctl status docker # 狀態(tài)
sudo systemctl enable docker #
?Grafana鏡像的下載安裝最新的的版本
docker pull grafana/grafana:latest
臨時(shí)不掛載目錄直接安裝命令:
# 臨時(shí)創(chuàng)建docker grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana:latest
docker ps -a 查看運(yùn)行的docker鏡像?
?
掛載目錄正式安裝?
查看容器的環(huán)境變量配置的默認(rèn)目錄
- 命令:docker inspect grafana | grep Env -A 10
- 說明:查看容器的“Env”配置的10行內(nèi)容
"Env": [
"PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_HOME=/usr/share/grafana",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_PLUGINS=/var/lib/grafana/plugins",
"GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
],
"Cmd": null,
"Image": "grafana/grafana:latest",
您在 /var/spool/mail/root 中有新郵件
在宿主機(jī)器創(chuàng)建目錄?
mkdir -p /opt/module/grafana/{logs,config,data,plugins}
將已經(jīng)創(chuàng)建的grafana容器的文件拷貝到宿主機(jī)
#將已經(jīng)創(chuàng)建的grafana容器文件拷貝到宿主機(jī)器
docker cp grafana:/etc/grafana/. /opt/module/grafana/config/
docker cp grafana:/var/lib/grafana/. /opt/module/grafana/data/
docker cp grafana:/var/log/grafana/. /opt/module/grafana/logs/
- 創(chuàng)建grafana用戶
- 說明:由于容器內(nèi)使用“grafana”用戶運(yùn)行“grafana”服務(wù),所有需要?jiǎng)?chuàng)建對(duì)應(yīng)的用戶(注:可進(jìn)入容器查看)
- 命令:useradd grafana
- 修改用戶的UID、GID信息
- 說明:由于容器內(nèi)的“grafana”用戶的UID、GID都是472,所以要保持一致修改
- 命令:vim /etc/passwd
-
- 命令:vim /etc/group
?修改映射目錄所有者為grafana用戶、并進(jìn)行授權(quán)
chown -R grafana:grafana /opt/module/grafana/
chmod -R 755 /opt/module/grafana/
創(chuàng)建容器啟動(dòng)命令:
docker run -d \
--name grafana \
-p 3000:3000 \
--privileged=true \
-v /opt/module/grafana/config/:/etc/grafana \
-v /opt/module/grafana/data/:/var/lib/grafana \
-v /opt/module/grafana/logs/:/var/log/grafana \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
-e TZ=Asia/Shanghai \
grafana/grafana:latest
# docker run:運(yùn)行并啟動(dòng)容器
# -d:在后臺(tái)運(yùn)行容器,并輸出容器ID
# --name:設(shè)置容器的名稱
# -p 3000:3000:容器的3000端口映射宿主機(jī)3000端口(程序訪問端口)
# --privileged=true:可選配置,目錄映射時(shí)避免出現(xiàn)權(quán)限問題
# -v:設(shè)置"宿主機(jī)目錄:容器目錄"映射位置
# -e:設(shè)置時(shí)區(qū)
# grafana/grafana:latest:執(zhí)行安裝的鏡像信息,格式:名稱:標(biāo)簽(REPOSITORY:TAG)
?訪問grafana頁面,賬號(hào)密碼默認(rèn)都是admin
- 地址:http://xxx.xxx.xxx.xxx:3000
- 賬密:admin / admin
至此順利的話已經(jīng)安裝結(jié)束了,但是博主遇到如下的報(bào)錯(cuò):
這個(gè)不錯(cuò)也不是賬號(hào)密碼錯(cuò)誤,而是Internal Server Error
通過命令查看docker的日志:
docker logs -f grafana
發(fā)現(xiàn)是數(shù)據(jù)庫(kù)權(quán)限問題
通過執(zhí)行如下命令解決:
chmod 777 grafana.db
##重啟docker 鏡像
docker restart grafana
出現(xiàn)如下界面 順利登錄。
?
訪問測(cè)試
訪問
{ip}:3000
即可,使用賬密 admin/admin 進(jìn)行登錄即可
使用測(cè)試
-
添加數(shù)據(jù)源
選擇普羅米修斯作為數(shù)據(jù)源
-
導(dǎo)入node模版?
?輸入:12633
,點(diǎn)擊右邊的Load
。
?選擇?prometheus,然后?Import。
?最后,順便點(diǎn)一下其他地方,選擇保存面板
。文章來源:http://www.zghlxwxcb.cn/news/detail-763353.html
我在安裝中用到的命令腳本:文章來源地址http://www.zghlxwxcb.cn/news/detail-763353.html
mkdir -p /opt/module/grafana/{logs,config,data,plugins}
# 臨時(shí)創(chuàng)建docker grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana:latest
chown -R grafana:grafana /opt/module/grafana/
chmod -R 755 /opt/module/grafana/
##a、查看容器的環(huán)境變量配置的默認(rèn)目錄
docker inspect grafana | grep Env -A 10
說明:查看容器的“Env”配置的10行內(nèi)容
"Env": [
"PATH=/usr/share/grafana/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
"GF_PATHS_CONFIG=/etc/grafana/grafana.ini",
"GF_PATHS_DATA=/var/lib/grafana",
"GF_PATHS_HOME=/usr/share/grafana",
"GF_PATHS_LOGS=/var/log/grafana",
"GF_PATHS_PLUGINS=/var/lib/grafana/plugins",
"GF_PATHS_PROVISIONING=/etc/grafana/provisioning"
],
"Cmd": null,
"Image": "grafana/grafana:latest",
您在 /var/spool/mail/root 中有新郵件
#將已經(jīng)創(chuàng)建的grafana容器文件拷貝到宿主機(jī)器
docker cp grafana:/etc/grafana/. /opt/module/grafana/config/
docker cp grafana:/var/lib/grafana/. /opt/module/grafana/data/
docker cp grafana:/var/log/grafana/. /opt/module/grafana/logs/
docker run -d \
--name grafana \
-p 3000:3000 \
--privileged=true \
-v /opt/module/grafana/config/:/etc/grafana \
-v /opt/module/grafana/data/:/var/lib/grafana \
-v /opt/module/grafana/logs/:/var/log/grafana \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
-e TZ=Asia/Shanghai \
grafana/grafana:latest
docker run -d \
-p 3000:3000 \
-net=host \
--name=grafana \
-v /etc/localtime:/etc/localtime:ro \
-v /opt/grafana/data:/var/lib/grafana \
-v /opt/grafana/plugins/:/var/lib/grafana/plugins \
-v /opt/grafana/config/grafana.ini:/etc/grafana/grafana.ini \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
grafana/grafana:9.3.2
CMD="/mnt/user/appdata/docker/module/exporter/Prometheus/prometheus-2.49.0-rc.1.linux-amd64/prometheus --config.file=prometheus.yml"
docker run -d \
--name grafana \
-p 321:3000 \
--privileged=true \
-v /mnt/user/appdata/docker/module/grafana/config/:/etc/grafana \
-v /mnt/user/appdata/docker/module/grafana/data/:/var/lib/grafana \
-v /mnt/user/appdata/docker/module/grafana/logs/:/var/log/grafana \
-e "GF_SECURITY_ADMIN_PASSWORD=admin" \
-e "GF_INSTALL_PLUGINS=grafana-clock-panel,grafana-simple-json-datasource" \
-e TZ=Asia/Shanghai \
grafana/grafana:latest
grafana:x:472:472::/home/grafana:/bin/bash
grafana:x:472:
chown -R grafana:grafana /mnt/user/appdata/docker/module/grafana
chmod -R 755 /mnt/user/appdata/docker/module/grafana
到了這里,關(guān)于超詳細(xì)教程:Centos安裝Prometheus、Grafana監(jiān)控Kafka及Linux主機(jī)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!