Skip to content

MySQL

Host metrics 是指从运行应用程序的主机的操作系统收集的指标,这些指标包括 CPU、内存、磁盘和网络使用情况。 了解主机指标至关重要,因为它可以帮助你识别可能影响应用程序整体性能的潜在问题或瓶颈。 在本教程中,我们将向你展示如何收集 Host metrics,将它们发送到 GreptimeDB 并进行数据可视化。

创建服务

为了充分体验 GreptimeCloud 的强大功能,你需要创建一个包含身份验证数据库的服务。打开 GreptimeCloud 控制台,注册并登录。然后单击 New Service 按钮并配置以下内容:

  • Service Name: 服务名称。
  • Description: 有关该服务的更多信息。
  • Region: 选择数据库所在的区域。
  • Plan: 选择要使用的定价计划。

现在创建服务,准备向其写入一些数据。

写入数据

准备

示例 Demo

我们将编写一个 Bash 脚本,并展示收集 host metrics 并将其发送到 GreptimeDB 的核心代码。您可以在 GitHub 上查看完整的 Demo。

首先,创建一个名为 quick-start-mysql 的新目录来托管我们的项目,然后创建一个名为 quick-start.sh 的新文件并使其可执行:

bash
touch quick-start.sh
chmod +x quick-start.sh
touch quick-start.sh
chmod +x quick-start.sh

在脚本中收集 CPU 和内存指标,并将数据格式化为 SQL 格式:

bash
#!/bin/bash
generate_data()
{
 unameOut="$(uname -s)"
 case "${unameOut}" in
  Linux*)
   user_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
   sys_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk '{print $6}')
   idle_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk -F "," '{print $4}' | awk -F " " '{print $1}')
   mem_util=$(free | grep Mem | awk '{print $3}')
   ;;
  Darwin*)
   user_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($3, 1, length($3)-1) }')
   sys_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($5, 1, length($5)-1) }')
   idle_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($7, 1, length($7)-1) }')
   mem_util=$(top -l 1 | awk '/^PhysMem:/ { print substr($6, 1, length($6)-1) }')
   ;;
  *)
   user_cpu_util=$(shuf -i 10-15 -n 1)
   sys_cpu_util=$(shuf -i 5-10 -n 1)
   idle_cpu_util=$(shuf -i 70-80 -n 1)
   mem_util=$(shuf -i 50-60 -n 1)
 esac
 cat <<EOF
    ("$unameOut",$user_cpu_util,$sys_cpu_util,$idle_cpu_util,$mem_util)
EOF
}
#!/bin/bash
generate_data()
{
 unameOut="$(uname -s)"
 case "${unameOut}" in
  Linux*)
   user_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4}')
   sys_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk '{print $6}')
   idle_cpu_util=$(top -bn1 | grep "Cpu(s)" | awk -F "," '{print $4}' | awk -F " " '{print $1}')
   mem_util=$(free | grep Mem | awk '{print $3}')
   ;;
  Darwin*)
   user_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($3, 1, length($3)-1) }')
   sys_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($5, 1, length($5)-1) }')
   idle_cpu_util=$(top -l 1 | awk '/^CPU usage: / { print substr($7, 1, length($7)-1) }')
   mem_util=$(top -l 1 | awk '/^PhysMem:/ { print substr($6, 1, length($6)-1) }')
   ;;
  *)
   user_cpu_util=$(shuf -i 10-15 -n 1)
   sys_cpu_util=$(shuf -i 5-10 -n 1)
   idle_cpu_util=$(shuf -i 70-80 -n 1)
   mem_util=$(shuf -i 50-60 -n 1)
 esac
 cat <<EOF
    ("$unameOut",$user_cpu_util,$sys_cpu_util,$idle_cpu_util,$mem_util)
EOF
}

每隔 5 秒发送数据到 GreptimeDB:

bash
# Create table
mysql --ssl-mode=REQUIRED -u $username -p$password -h $host -P 4002 -A $database \
    -e "CREATE TABLE IF NOT EXISTS monitor (host STRING, user_cpu DOUBLE, sys_cpu DOUBLE, idle_cpu DOUBLE, memory DOUBLE, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), TIME INDEX(ts), PRIMARY KEY(host));"

# Insert metrics
echo Sending metrics to GreptimeCloud...
while true
do
 sleep 2
 mysql --ssl-mode=REQUIRED -u $username -p$password -h $host -P 4002 -A $database \
        -e "INSERT INTO monitor(host, user_cpu, sys_cpu, idle_cpu, memory) VALUES $(generate_data);"
done
# Create table
mysql --ssl-mode=REQUIRED -u $username -p$password -h $host -P 4002 -A $database \
    -e "CREATE TABLE IF NOT EXISTS monitor (host STRING, user_cpu DOUBLE, sys_cpu DOUBLE, idle_cpu DOUBLE, memory DOUBLE, ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP(), TIME INDEX(ts), PRIMARY KEY(host));"

# Insert metrics
echo Sending metrics to GreptimeCloud...
while true
do
 sleep 2
 mysql --ssl-mode=REQUIRED -u $username -p$password -h $host -P 4002 -A $database \
        -e "INSERT INTO monitor(host, user_cpu, sys_cpu, idle_cpu, memory) VALUES $(generate_data);"
done

请参阅 GreptimeDBGreptimeCloud 中的 MySQL 文档以获取命令中的 hostdatabaseusernamepassword 信息,

恭喜你完成了 Demo 的核心部分!现在可以按照 GitHub 库README.md 文件中的说明运行完整的 Demo。

连接信息可以在 GreptimeCloud 控制台中找到。

数据可视化

在开发人员的日常工作中,可视化面板中的数据和监控指标非常重要。在 GreptimeCloud 控制台中,单击 Open Prometheus Workbench,然后单击 + New RulesetAdd Group,将组命名为 host-monitor 并添加面板。

要为关注的所有 Table 添加面板,请选择相应的 Table 并逐个单击 Add Panel。添加完所有必要的面板后,单击 save 按钮保存它们。之后你可以在日常工作中通过查看面板来监控指标。此外你可以为 Panel 设置警报规则,以便在指标超过阈值时收到通知。