control_node_exporter.sh
,并给予权限 chmod + x control_node_exporter.sh
,脚本内容如下: #!/bin/bash
PID_FILE="node_exporter.pid"
LOG_FILE="node_exporter.log"
###这个路径是解压以后这个文件的路径,这个根据每个人路径不同,填入的也不同
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
执行命令:
./control_node_exporter.sh start
host:9100
,是否看到下面的页面出现如上的界面,表示此部分的部署成功。
chmod + x start.sh
,脚本内容如下: #!/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 的集群地址(注意:一定要写上所有的节点地址)
./start.sh
启动 kafka_exporter.验证 kafka_exporter 是否启动成功:
host:9308
,是否看到下面的页面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=` 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 本机服务器监控
- job_name: 'node'
static_configs:
- targets: ['localhost:9100']
# 新增部分: kafka_exporter kafka集群监控
- job_name: 'kafka'
static_configs:
- targets: ['localhost:9308']
control_prometheus.sh
,并给予执行权限 chmod +x control_prometheus.sh
,脚本内容如下: #!/bin/bash
PID_FILE="prometheus.pid"
LOG_FILE="prometheus.log"
#根据自己目录情况定义
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
tail -fn 1000 prometheus.log
。http://host:9090
,是否可以看到 prometheus 的 web ui 通过命令行一键安装
curl -fsSL https://get.docker.com/ | sh ;
#如果没有curl ,需要先安装curl
apt install curl;
docker的开启 和停止命令:
sudo systemctl start docker # 开启
sudo systemctl status docker # 状态
sudo systemctl enable docker #
docker pull grafana/grafana:latest
临时不挂载目录直接安装命令:
# 临时创建docker grafana
docker run -d --name=grafana -p 3000:3000 grafana/grafana:latest
docker ps -a 查看运行的docker镜像
"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 中有新邮件
mkdir -p /opt/module/grafana/{logs,config,data,plugins}
将已经创建的grafana容器的文件拷贝到宿主机
#将已经创建的grafana容器文件拷贝到宿主机器
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/
chown -R grafana:grafana /opt/module/grafana/
chmod -R 755 /opt/module/grafana/
创建容器启动命令:
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:在后台运行容器,并输出容器ID
# --name:设置容器的名称
# -p 3000:3000:容器的3000端口映射宿主机3000端口(程序访问端口)
# --privileged=true:可选配置,目录映射时避免出现权限问题
# -v:设置"宿主机目录:容器目录"映射位置
# -e:设置时区
# grafana/grafana:latest:执行安装的镜像信息,格式:名称:标签(REPOSITORY:TAG)
访问grafana页面,账号密码默认都是admin
至此顺利的话已经安装结束了,但是博主遇到如下的报错:
这个不错也不是账号密码错误,而是Internal Server Error
通过命令查看docker的日志:
docker logs -f grafana
通过执行如下命令解决:
chmod 777 grafana.db
##重启docker 镜像
docker restart grafana
出现如下界面 顺利登录。
访问
{ip}:3000
即可,使用账密 admin/admin 进行登录即可
输入:12633
,点击右边的Load
。
prometheus
,然后 Import
。 最后,顺便点一下其他地方,选择保存面板
。
我在安装中用到的命令脚本:
mkdir -p /opt/module/grafana/{logs,config,data,plugins}
# 临时创建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、查看容器的环境变量配置的默认目录
docker inspect grafana | grep Env -A 10
说明:查看容器的“Env”配置的10行内容
"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 中有新邮件
#将已经创建的grafana容器文件拷贝到宿主机器
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