如何在Ubuntu 16.04上安装Prometheus

介绍

Prometheus是一个功能强大的开源监控系统,可从您的服务中收集指标并将其存储在时间序列数据库中。它通过Grafana等工具提供多维数据模型,灵活的查询语言和多样化的可视化可能性。

默认情况下,Prometheus仅导出有关其自身的指标(例如,它收到的请求数,内存消耗等)。但是,您可以通过安装导出程序,生成其他指标的可选程序来大大扩展Prometheus 。

出口商 - Prometheus团队维护的官方出版物以及社区贡献的出口商 - 提供从基础设施,数据库和Web服务器到消息系统,API等所有内容的信息。

一些最受欢迎的选择包括:

  • node_exporter - 这将生成有关基础结构的度量标准,包括当前CPU,内存和磁盘使用情况,以及I / O和网络统计信息,例如从磁盘读取的字节数或服务器的平均负载。
  • blackbox_exporter - 这会生成从HTTP和HTTPS等探测协议派生的指标,以确定端点可用性,响应时间等。
  • mysqld_exporter - 收集与MySQL服务器相关的度量标准,例如执行的查询数,平均查询响应时间和集群复制状态。
  • rabbitmq_exporter - 输出有关RabbitMQ消息传递系统的指标,包括发布的消息数,准备发送的消息数以及队列中所有消息的大小。
  • nginx-vts-exporter - 提供有关使用Nginx VTS模块的Nginx Web服务器的指标,包括打开的连接数,发送的响应数(按响应代码分组)以及发送或接收的请求的总大小(以字节为单位) 。

您可以在Prometheus网站上找到更完整的官方和社区贡献出口商列表。

在本教程中,您将安装,配置和保护Prometheus和节点导出器,以生成可以更轻松地监控服务器性能的指标。

课程准备

在学习本教程之前,请确保您拥有:

  • 一个Ubuntu 16.04 腾讯CVM,且具备初始服务器设置,包括一个sudo非root用户和防火墙。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  • 按照腾讯云+社区教程中如何安装Nginx的相关教程安装Nginx。

第1步 - 创建服务用户

出于安全考虑,我们首先创建两个新用户帐户prometheusnode_exporter。我们将在整个教程中使用这些帐户来隔离Prometheus核心文件和目录的所有权。

创建这两个用户,并使用--no-create-home--shell /bin/false选项,以便这些用户无法登录到服务器。

sudo useradd --no-create-home --shell /bin/false prometheus
sudo useradd --no-create-home --shell /bin/false node_exporter

在我们下载Prometheus二进制文件之前,请创建用于存储Prometheus文件和数据的必要目录。遵循Linux的标准惯例,我们将为prometheus的配置文件在/etc中创建一个目录,并为其数据在/var/lib中创建一个目录。

sudo mkdir /etc/prometheus
sudo mkdir /var/lib/prometheus

现在,将新目录的用户和组所有权设置为prometheus用户。

sudo chown prometheus:prometheus /etc/prometheus
sudo chown prometheus:prometheus /var/lib/prometheus

有了我们的用户和目录,我们现在可以下载Prometheus,然后创建最小配置文件,以便首次运行Prometheus。

第2步 - 下载Prometheus

首先,将当前稳定版本的Prometheus下载并解压缩到您的主目录中。您可以在Prometheus下载页面上找到最新的二进制文件及其校验和。

cd ~
curl -LO https://github.com/prometheus/prometheus/releases/download/v2.0.0/prometheus-2.0.0.linux-amd64.tar.gz

接下来,使用该sha256sum命令生成下载文件的校验和:

sha256sum prometheus-2.0.0.linux-amd64.tar.gz

将此命令的输出与Prometheus下载页面上的校验和进行比较,以确保您的文件既是正版文件又未损坏。

e12917b25b32980daee0e9cf879d9ec197e2893924bd1574604eb0f550034d46  prometheus-2.0.0.linux-amd64.tar.gz

如果校验和不匹配,请删除下载的文件并重复上述步骤以重新下载文件。

现在,解压缩下载的存档。

tar xvf prometheus-2.0.0.linux-amd64.tar.gz

这将创建一个名为prometheus-2.0.0.linux-amd64的目录,该目录包含两个二进制文件(prometheuspromtool),目录consolesconsole_libraries包含Web界面文件,许可证,通知和几个示例文件的目录。

将两个二进制文件复制到该/usr/local/bin目录。

sudo cp prometheus-2.0.0.linux-amd64/prometheus /usr/local/bin/
sudo cp prometheus-2.0.0.linux-amd64/promtool /usr/local/bin/

将二进制文件的用户和组所有权设置为在步骤1中创建的prometheus用户。

sudo chown prometheus:prometheus /usr/local/bin/prometheus
sudo chown prometheus:prometheus /usr/local/bin/promtool

consolesconsole_libraries目录复制到/etc/prometheus

sudo cp -r prometheus-2.0.0.linux-amd64/consoles /etc/prometheus
sudo cp -r prometheus-2.0.0.linux-amd64/console_libraries /etc/prometheus

将目录上的用户和组所有权设置为prometheus用户。使用该-R标志将确保对目录内的文件设置所有权。

sudo chown -R prometheus:prometheus /etc/prometheus/consoles
sudo chown -R prometheus:prometheus /etc/prometheus/console_libraries

最后,从主目录中删除剩余文件,因为我们不再需要它们。

rm -rf prometheus-2.0.0.linux-amd64.tar.gz prometheus-2.0.0.linux-amd64

现在已经安装了Prometheus,我们将在准备第一次运行时创建其配置和服务文件。

第3步 - 配置Prometheus

/etc/prometheus目录中,使用nano或您喜欢的文本编辑器来创建名为prometheus.yml的配置文件。目前,该文件将包含足够的信息,以便首次运行Prometheus。

sudo nano /etc/prometheus/prometheus.yml

警告: Prometheus的配置文件使用YAML格式,该格式严格禁止选项卡,并且需要两个空格来缩进。如果配置文件格式不正确,Prometheus将无法启动。

global设置中,定义抓取指标的默认时间间隔。请注意,除非单个导出器自己的设置覆盖全局变量,否则Prometheus会将这些设置应用于每个导出器。

global:
  scrape_interval: 15s

scrape_interval值告诉Prometheus 每15秒从其出口商那里收集指标,这对于大多数出口商而言足够长。

现在,使用以下scrape_configs指令将Prometheus本身添加到导出器列表中:

...
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

Prometheus使用job_name在标签和图表上标记出口商,因此请务必在此处选择描述性内容。

而且,由于Prometheus会导出可用于监控性能和调试的重要数据,因此我们将全局scrape_interval指令从15秒重写为5秒,以便更频繁地进行更新。

最后,Prometheus使用static_configstargets指令来确定导出器的运行位置。由于此特定导出器与Prometheus本身在同一服务器上运行,因此我们可以使用localhostIP地址而不是默认端口9090来代替IP地址。

您的配置文件现在应如下所示:

global:
  scrape_interval: 15s
​
scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']

保存文件并退出文本编辑器。

现在,将配置文件上的用户和组所有权设置为在步骤1中创建的prometheus用户。

sudo chown prometheus:prometheus /etc/prometheus/prometheus.yml

配置完成后,我们准备首次运行它来测试Prometheus。

第4步 - 运行Prometheus

启动Prometheus作为prometheus用户,为配置文件和数据目录提供路径。

sudo -u prometheus /usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries

输出包含有关Prometheus加载进度,配置文件和相关服务的信息。这也证实Prometheus正在端口 9090监听。

Outputlevel=info ts=2017-11-17T18:37:27.474530094Z caller=main.go:215 msg="Starting Prometheus" version="(version=2.0.0, branch=HEAD, re
vision=0a74f98628a0463dddc90528220c94de5032d1a0)"
level=info ts=2017-11-17T18:37:27.474758404Z caller=main.go:216 build_context="(go=go1.9.2, user=root@615b82cb36b6, date=20171108-
07:11:59)"
level=info ts=2017-11-17T18:37:27.474883982Z caller=main.go:217 host_details="(Linux 4.4.0-98-generic #121-Ubuntu SMP Tue Oct 10 1
4:24:03 UTC 2017 x86_64 prometheus-update (none))"
level=info ts=2017-11-17T18:37:27.483661837Z caller=web.go:380 component=web msg="Start listening for connections" address=0.0.0.0
:9090
level=info ts=2017-11-17T18:37:27.489730138Z caller=main.go:314 msg="Starting TSDB"
level=info ts=2017-11-17T18:37:27.516050288Z caller=targetmanager.go:71 component="target manager" msg="Starting target manager...
"
level=info ts=2017-11-17T18:37:27.537629169Z caller=main.go:326 msg="TSDB started"
level=info ts=2017-11-17T18:37:27.537896721Z caller=main.go:394 msg="Loading configuration file" filename=/etc/prometheus/promethe
us.yml
level=info ts=2017-11-17T18:37:27.53890004Z caller=main.go:371 msg="Server is ready to receive requests."

如果收到错误消息,请仔细检查您是否在配置文件中使用了YAML语法,然后按照屏幕上的说明解决问题。

现在,按CTRL+C来停止Prometheus ,然后打开一个新的systemd服务文件。

sudo nano /etc/systemd/system/prometheus.service

服务文件告诉systemd,您将Prometheus作为prometheus用户运行,并且配置文件位于/etc/prometheus/prometheus.yml目录中,并将其数据存储在/var/lib/prometheus目录中。(systemd服务文件的详细信息超出了本教程的范围,但您可以在腾讯云+社区了解更多信息。)

将以下内容复制到文件中:

[Unit]
Description=Prometheus
Wants=network-online.target
After=network-online.target
​
[Service]
User=prometheus
Group=prometheus
Type=simple
ExecStart=/usr/local/bin/prometheus \
    --config.file /etc/prometheus/prometheus.yml \
    --storage.tsdb.path /var/lib/prometheus/ \
    --web.console.templates=/etc/prometheus/consoles \
    --web.console.libraries=/etc/prometheus/console_libraries
​
[Install]
WantedBy=multi-user.target

最后,保存文件并关闭文本编辑器。

要使用新创建的服务,请重新加载systemd

sudo systemctl daemon-reload

您现在可以使用以下命令启动Prometheus:

sudo systemctl start prometheus

要确保Prometheus正在运行,请检查服务的状态。

sudo systemctl status prometheus

输出结果会告诉您Prometheus的状态,主进程标识符(PID),内存使用等。

如果服务的状态不是active,请按照屏幕上的说明进行操作,并在继续本教程之前重新跟踪上述步骤以解决问题。

● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:40:40 UTC; 3s ago
 Main PID: 2104 (prometheus)
    Tasks: 7
   Memory: 13.8M
      CPU: 470ms
   CGroup: /system.slice/prometheus.service
...

当您准备好继续前进时,请按Q退出status命令。

最后,启用服务以在开机时启动。

sudo systemctl enable prometheus

现在Prometheus已经启动并运行,我们可以安装一个额外的导出器来生成有关我们服务器资源的指标。

第5步 - 下载节点导出器

要将Prometheus扩展到仅关于自身的指标之外,我们将安装另一个名为Node Exporter的导出器。节点导出器提供有关系统的详细信息,包括CPU,磁盘和内存使用情况。

首先,将当前稳定版本的Node Exporter下载到您的主目录中。您可以在Prometheus的下载页面上找到最新的二进制文件及其校验和。

cd ~
curl -LO https://github.com/prometheus/node_exporter/releases/download/v0.15.1/node_exporter-0.15.1.linux-amd64.tar.gz

使用该sha256sum命令生成下载文件的校验和:

sha256sum node_exporter-0.15.1.linux-amd64.tar.gz

通过将其校验和与下载页面上的校验和进行比较来验证下载文件的完整性。

7ffb3773abb71dd2b2119c5f6a7a0dbca0cff34b24b2ced9e01d9897df61a127  node_exporter-0.15.1.linux-amd64.tar.gz

如果校验和不匹配,请删除下载的文件并重复上述步骤。

现在,解压缩下载的存档。

tar xvf node_exporter-0.15.1.linux-amd64.tar.gz

这将创建一个名为node_exporter-0.15.1.linux-amd64的目录,该目录包含名为node_exporter二进制文件,许可证和通知。

将二进制文件复制到/usr/local/bin目录,并将用户和组所有权设置为您在步骤1中创建的node_exporter用户。

sudo cp node_exporter-0.15.1.linux-amd64/node_exporter /usr/local/bin
sudo chown node_exporter:node_exporter /usr/local/bin/node_exporter

最后,从主目录中删除剩余文件,因为我们不再需要它们。

rm -rf node_exporter-0.15.1.linux-amd64.tar.gz node_exporter-0.15.1.linux-amd64

现在您已经安装了Node Exporter,让我们在为它创建服务文件之前运行它,并借此来测试它,以便它在开机时启动。

第6步 - 运行节点导出器

运行Node Exporter的步骤与运行Prometheus本身的步骤类似。首先为Node Exporter创建Systemd服务文件。

sudo nano /etc/systemd/system/node_exporter.service

此服务文件告诉您的系统将Node Exporter作为node_exporter用户运行,并启用默认的收集器集。

将以下内容复制到服务文件中:

[Unit]
Description=Node Exporter
Wants=network-online.target
After=network-online.target

[Service]
User=node_exporter
Group=node_exporter
Type=simple
ExecStart=/usr/local/bin/node_exporter

[Install]
WantedBy=multi-user.target

收集器定义节点导出器将生成哪些度量标准。您可以在Node Exporter自述文件中查看Node Exporter的完整收集器列表 - 包括默认启用和不推荐使用的收集器列表。

如果您需要覆盖默认的收集器列表,可以使用--collectors.enabled标志,如:

...
ExecStart=/usr/local/bin/node_exporter --collectors.enabled meminfo,loadavg,filesystem
...

前面的示例将告诉节点导出器仅使用 meminfo, loadavgfilesystem 收集器生成指标。您可以根据您的需要将收集器限制为很少或很多,但请注意,逗号之前或之后没有空格。

保存文件并关闭文本编辑器。

最后,重新加载systemd以使用新创建的服务。

sudo systemctl daemon-reload

您现在可以使用以下命令运行Node Exporter:

sudo systemctl start node_exporter

使用该status命令验证节点导出器是否正确运行。

sudo systemctl status node_exporter

与之前一样,此输出告诉您节点导出器的状态,主进程标识符(PID),内存使用情况等。

如果服务的状态不是active,请按照屏幕上的消息并重新跟踪上述步骤以解决问题,然后再继续。

● node_exporter.service - Node Exporter
   Loaded: loaded (/etc/systemd/system/node_exporter.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:44:46 UTC; 5s ago
 Main PID: 2161 (node_exporter)
    Tasks: 3
   Memory: 1.4M
      CPU: 11ms
   CGroup: /system.slice/node_exporter.service

最后,启用节点导出器以开机时启动。

sudo systemctl enable node_exporter

随着Node Exporter完全配置并按预期运行,我们将告诉Prometheus开始抓取新指标。

步骤7 - 配置Prometheus以刮取节点导出器

因为Prometheus只抓取在其配置文件scrape_configs部分中定义的导出器,所以我们需要为Node Exporter添加一个条目,就像我们为Prometheus本身所做的那样。

打开配置文件。

sudo nano /etc/prometheus/prometheus.yml

scrape_configs块的末尾,添加一个名为node_exporter的新条目。

...
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']

由于此导出程序也在与Prometheus本身相同的服务器上运行,因此我们可以再次使用localhost而不是IP地址,同样使用Node Exporter的默认9100端口。

您的整个配置文件应如下所示:

global:
  scrape_interval: 15s

scrape_configs:
  - job_name: 'prometheus'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9090']
  - job_name: 'node_exporter'
    scrape_interval: 5s
    static_configs:
      - targets: ['localhost:9100']       

准备好继续时,保存文件并退出文本编辑器。

最后,重新启动Prometheus以使更改生效。

sudo systemctl restart prometheus

再次使用该status命令验证一切是否正常运行。

sudo systemctl status prometheus

如果未将服务状态设置为active,请按照屏幕上的说明操作并重新跟踪先前的步骤,然后再继续操作。

● prometheus.service - Prometheus
   Loaded: loaded (/etc/systemd/system/prometheus.service; disabled; vendor preset: enabled)
   Active: active (running) since Fri 2017-07-21 11:46:39 UTC; 6s ago
 Main PID: 2219 (prometheus)
    Tasks: 6
   Memory: 19.9M
      CPU: 433ms
   CGroup: /system.slice/prometheus.service

我们现在已安装,配置和运行Prometheus和Node Exporter。作为连接到Web界面之前的最后一项预防措施,我们将通过基本HTTP身份验证来增强安装的安全性,以确保未经授权的用户无法访问我们的指标。

第8步 - 保护Prometheus

Prometheus不包含内置身份验证或任何其他通用安全机制。一方面,这意味着您将获得一个具有更少配置限制的高度灵活的系统; 另一方面,这意味着您需要确保您的指标和整体设置足够安全。

为简单起见,我们将使用Nginx为我们的安装添加基本的HTTP身份验证,Prometheus及其首选的数据可视化工具Grafana都完全支持它。

首先安装apache2-utils,这将使您可以访问用于生成密码文件的实用程序htpasswd

sudo apt-get update
sudo apt-get install apache2-utils

现在,通过告知htpasswd您要存储文件的位置以及要用于身份验证的用户名来创建密码文件。

注意: htpasswd将提示您输入并重新确认您要与此用户关联的密码。另外,请记下您在此处输入的用户名和密码,因为您需要在步骤9中登录Prometheus。

sudo htpasswd -c /etc/nginx/.htpasswd sammy

此命令的结果是一个新创建的文件.htpasswd,该文件位于目录/etc/nginx中,该目录包含用户名和您输入的密码的hashed版本。

接下来,配置Nginx以使用新创建的密码。

首先,制作默认Nginx配置文件的Prometheus特定副本,以便以后在遇到问题时可以恢复为默认值。

sudo cp /etc/nginx/sites-available/default /etc/nginx/sites-available/prometheus

然后,打开新配置文件。

sudo nano /etc/nginx/sites-available/prometheus

找到location /块下方的server块。它应该看起来像:

...
    location / {
        try_files $uri $uri/ =404;
    }
...

由于我们将所有流量转发到Prometheus,请使用以下内容替换该try_files指令:

...
    location / {
        auth_basic "Prometheus server authentication";
        auth_basic_user_file /etc/nginx/.htpasswd;
        proxy_pass http://localhost:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
...

这些设置可确保用户必须在每个新会话开始时进行身份验证。此外,反向代理会将此块处理的所有请求定向到Prometheus。

完成更改后,保存文件并关闭文本编辑器。

现在,通过删除/etc/nginx/sites-enabled目录中的链接来取消激活默认Nginx配置文件,并通过创建指向它的链接来激活新配置文件。

sudo rm /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/prometheus /etc/nginx/sites-enabled/

在重新启动Nginx之前,请使用以下命令检查配置是否有错误:

sudo nginx -t

输出应该表明syntax is oktest is successful。如果收到错误消息,请按照屏幕上的说明解决问题,然后再继续执行下一步。

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

然后,重新加载Nginx以包含所有更改。

sudo systemctl reload nginx

验证Nginx是否已启动并正在运行。

sudo systemctl status nginx

如果您的输出未指示服务的状态active,请按照屏幕上的消息重新跟踪上述步骤以解决问题,然后再继续。

● nginx.service - A high performance web server and a reverse proxy server
   Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
   Active: active (running) since Mon 2017-07-31 21:20:57 UTC; 12min ago
  Process: 4302 ExecReload=/usr/sbin/nginx -g daemon on; master_process on; -s r
 Main PID: 3053 (nginx)
    Tasks: 2
   Memory: 3.6M
      CPU: 56ms
   CGroup: /system.slice/nginx.service

此时,我们拥有一个功能齐全且安全的Prometheus服务器,因此我们可以登录Web界面开始查看指标。

第9步 - 测试Prometheus

Prometheus提供了一个基本的Web界面,用于监视自身及其导出器的状态,执行查询以及生成图形。但是,由于界面的简单性,Prometheus团队建议 安装和使用Grafana,而不是测试和调试。

在本教程中,我们将使用内置的Web界面来确保Prometheus和Node Exporter正常运行,我们还将查看简单的查询和图形。

首先,将Web浏览器指向http://your_server_ip

在HTTP身份验证对话框中,输入您在步骤8中选择的用户名和密码。

登录后,您将看到Expression Browser,您可以在其中执行和可视化自定义查询。

在执行任何表达式之前,首先单击屏幕顶部的Status菜单,然后单击Targets菜单选项,验证Prometheus和Node Explorer的状态。由于我们已将Prometheus配置为自身和节点导出器,因此您应该看到UP状态中列出了两个目标。

如果缺少导出器或显示错误消息,请使用以下命令检查服务的状态:

sudo systemctl status prometheus
sudo systemctl status node_exporter

两个服务的输出应报告Active: active (running)状态。如果某项服务完全不活动或处于活动状态但仍无法正常工作,请按照屏幕上的说明操作并重新跟踪前面的步骤,然后再继续。

接下来,为了确保导出器正常工作,我们将针对Node Exporter执行一些表达式。

首先,单击屏幕顶部的“ 图形”菜单返回“ 表达式浏览器”

在“ 表达式”字段中,键入node_memory_MemAvailable并按“ 执行”按钮以使用服务器具有的内存量更新“ 控制台”选项卡。

默认情况下,节点导出程序以字节为单位报告此数量。要转换为兆字节,我们将使用数学运算符除以1024两次。

在“ 表达式”字段中,输入node_memory_MemAvailable/1024/1024然后按“ 执行”按钮。

控制台”选项卡现在将以兆字节为单位显示结果。

如果要验证结果,请从终端执行free命令。(该-h标志告诉 free 要以人类可读的格式,兆字节为单位给我们发回报告。)

free -h

此输出包含有关内存使用情况的详细信息,包括可用列中显示的可用内存。

              total        used        free      shared  buff/cache   available
Mem:           488M        144M         17M        3.7M        326M        324M
Swap:            0B          0B          0B

除了基本运算符之外,Prometheus查询语言还提供了许多用于聚合结果的函数。

在“ 表达式”字段中,键入avg_over_time(node_memory_MemAvailable[5m])/1024/1024并单击“ 执行”按钮。结果将是过去5分钟内的平均可用内存(以兆字节为单位)。

现在,单击Graph选项卡将执行的表达式显示为图形而不是文本。

最后,在此选项卡上,将鼠标悬停在图表上,以获取有关图表X和Y轴上任何特定点的其他详细信息。

如果您想了解有关在Prometheus的内置Web界面中创建表达式的更多信息,请参阅官方文档中的查询Prometheus部分。

结论

在本教程中,我们使用一个额外的导出器下载,配置,保护和测试了完整的Prometheus安装。

要了解Prometheus还能做些什么,请访问Prometheus官方文档

而且,要了解有关扩展Prometheus的更多信息,请查看可用出口商列表以及Grafana官方网站

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How To Install Prometheus on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java帮帮-微信公众号-技术文章全总结

Java模板生成word文档/POI生成Excel【面试+工作】

首先要指出的是,实现的思路和freeMarker差不离,将.doc的文档做相应的转换后转为.ftl文档,其中的变量会以${xxx}来代替,这样就可以

3482
来自专栏wblearn

我的Github之Pull request的使用

GitHub已经成为的一切开放源码软件的基石。开发人员喜欢它,基于它进行协作,并不断通过它开发令人惊叹的项目。除了​​代码托管,GitHub的主要吸引力是使用它...

1202
来自专栏北京马哥教育

出了Linux 故障找不到方法?看大牛简单、朴实的解决思路

本文由马哥教育Linux云计算面授班23期学员推荐,转载自互联网,作者为Lis,Linux资深技术专家,内容略经小编改编和加工,观点跟作者无关,最后感谢作者的辛...

4106
来自专栏北京马哥教育

秒懂!四步16点高效搞定高性能web服务器nginx

Nginx(读音engine x)服务器由于性能优秀稳定、配置简单以及跨平台,被越来越多的公司和个人所采用,现已成为市场份额继Apache之后的第二大Web服务...

1432
来自专栏程序员互动联盟

【专业技术】arm中的7种执行模式

嵌入式设备已经越来越与我们的日常生活密切相关了,由此带来了ARM的高速发展。就拿我们的手机来说吧,几乎所有的手机都是ARM体系的。这里大致介绍下ARM 的7种执...

3849
来自专栏容器云生态

根据红帽RHEL7官方文档对centos7进行技术剖析(二)

第一章 使用红帽kickstart,自动化安装rhel。 http://pan.baidu.com/s/1qWqfXlq    文档下载地址。 第二章: 控制对...

3537
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装和使用CFEngine Community Edition

如果您正在为IT基础架构寻找快速且高度可扩展的配置管理工具,那么您应该尝试使用CFEngine。虽然它提供的功能与其他流行工具(如Puppet和Chef)提供的...

670
来自专栏张戈的专栏

解决Linux下MySQL启动错误Starting MySQL.Manager of pid-file quit without updating file.[FAILED]

上午刚装完 MySQL,启动时报如下错误: Starting MySQL.Manager of pid-file quit without updating f...

3435
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Cassandra并运行单节点集群

Cassandra或Apache Cassandra是一个高度可扩展的开源NoSQL数据库系统,在多节点设置上实现了出色的性能。

2313
来自专栏Java职业技术分享

java框架之Spring 核心框架体系结构

很多人都在用spring开发java项目,但是配置maven依赖的时候并不能明确要配置哪些spring的jar,经常是胡乱添加一堆,编译或运行报错就继续配置ja...

870

扫码关注云+社区

领取腾讯云代金券