開源軟體

怎麼在 Ubuntu14.04上安裝 Elasticsearch, Logstash, Kibana (ELK Stack)

系列教程

這是在 Ubuntu 14.04 上使用 ELK 集中化日誌系列教程中的一篇。該系列共有4篇,其他3篇敬請期待~

前言

在這個教程中,將會全面介紹怎麼在 Ubuntu 14.04上安裝 Elasticsearch ELK Stack,也就是 Elasticsearch 2.2.x, Logstash 2.2.x, 以及 Kibana 4.4.x。當然,這裡也會涉及在一個集中點中怎麼配置 Filebeat1.1x 來收集和可視化的系統日誌的教程。Logstash 是收集、分析和存儲日誌以供日後使用的開源工具。Kibana 是一個 Web 界面,可用於搜索和查看 Logstash 已索引的日誌。這兩個工具都基於用於存儲日誌的 Elasticsearch。

在你試圖找出伺服器或應用程序問題時,集中化日誌是非常有用的,因為它可以讓你在一個地方搜索所有的日誌。在確定跨多個伺服器的問題這一點也非常有用,因為它在一個特定的時間範圍內收集多個伺服器的日誌。

用 Logstash 可以收集很多類型的日誌,但是在這個教程中我們限定範圍為 syslog

我們的目的

這篇教程的目的是安裝 Logstash 來收集多個 server syslog,然後安裝 Kibana 來可視化收集到的日誌。

ELK stack 的安裝有4個主要的組件:

  • Logstash:在 server 端,處理傳入的日誌。
  • Elasticsearch:存儲所有的日誌。
  • KibanaWeb 界面,用來搜索和可視化日誌;使用 Nginx 代理實現。
  • Filebeat:安裝在 client 端(也就是你需要收集日誌的目標伺服器),將日誌發送給 LogstashFilebeat 端作為一個日誌傳送代理,使用的是 lumberjack 網路協議與 Logstash 通信。

elk

我們先安裝前三個組件,它們需要安裝在同一個 server 上,這個 server 就是我們的 ELK ServerFilebeat 會安裝在所有我們想要收集 log 的客戶端,統稱為 Client Servers

安裝前

要完成這個教程,需要 Ubuntu 14.04 VPS root 許可權。配置的教程可以在這裡找到: Initial Server Setup with Ubuntu 14.04(steps 3 and 4)。

如果你想用 CentOS,看這個教程:How To Install ELK on CentOS 7.

ELK Server 的 CPU、RAM 和存儲量的需求取決於你將要收集的 log 的數量。在這個教程中,我們將使用以下規格的一個 VPS 作為我們 ELK Server:

  • OS:Ubuntu 14.04
  • RAM:4GB
  • CPU:2

除了 ELK Server,你需要有其他的 Servers 作為日誌來源。

廢話不啰嗦了,開始配置吧!

安裝 JAVA 8

Elasticsearch 和 Logstash 需要 Java,所以我們需要安裝。Elasticsearch 需要安裝最新的 Oracle Java 8。當然,如果你要用 OpenJDK 的話,應該也不錯。

添加 Oracle JavaPPA apt
sudo add-apt-repository -y ppa:webupd8team/java
更新apt包資料庫:
sudo apt-get update
安裝穩定版 Oracle Java8(接受彈出的協議內容):

sudo apt-get -y install oracle-java8-installer

Java 8 安裝好了,接下來安裝 Elasticsearch

安裝 Elasticsearch

Elasticsearch 可以用包管理器通過添加 Elastic 的包源列表進行安裝。

用下面的命令來導入 Elasticsearch 公共 GPG 密鑰到 apt:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
如果你的終端提示停在這裡不動了,可能是在等你輸入用戶密碼(為了授權 sudo 命令)。遇到了的話,輸入你的密碼就好。

創建 Elasticsearch 資源列表:

echo "deb http://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list

更新 apt 包資料庫:

sudo apt-get update

安裝 Elasticsearch

sudo apt-get -y install elasticsearch

安裝好了,接下來編輯配置文檔:

sudo vi /etc/elasticsearch/elasticsearch.yml

要限制你的 Elasticsearch 介面(埠9200)外的訪問,這樣外人無法通過 HTTP API 讀取數據或關閉您的 Elasticsearch 集群。找到 network.host,取消注釋,用 localhost 替換它的值:

network.host: localhost

 保存並退出 elasticsearch.yml。

現在,打開 Elasticsearch:

sudo service elasticsearch restart

然後運行以下命令將在系統啟動時啟動 Elasticsearch

sudo update-rc.d elasticsearch defaults 95 10

現在 Elaticsearch 設置好也啟動了,現在來安裝 Kibana。

安裝 Kibana

Kibana 可以用包管理器通過添加 Elastic 的包源列表進行安裝。

創建 Kibana 資源列表:

echo "deb http://packages.elastic.co/kibana/4.4/debian stable main" | sudo tee -a /etc/apt/sources.list.d/kibana-4.4.x.list

更新 apt 包資料庫:

sudo apt-get update

安裝 Kibana

sudo apt-get -y install kibana

這樣就安裝好了。

打開 Kibana 配置文件編輯:

sudo vi /opt/kibana/config/kibana.yml

在文件中找到 server.host,用 localhost 替換0.0.0.0:

server.host: "localhost"

保存,退出。這個操作讓 Kibana 只能被 localhost訪問。不要擔心,我們會用 Nginx反向代理來允許外部訪問。

現在啟用 Kibana 服務:

sudo update-rc.d kibana defaults 96 9
sudo service kibana start

在使用 Kibana Web 界面的之前,我們必須安裝反向代理。接下來就來安裝 Ngnix 吧!

安裝 Ngnix

因為我們配置了 Kibana 監聽 localhost,我們必須安裝反向代理來允許外部訪問。這裡就使用 Ngnix 來達成這個目的。

注意:如果你已經有要用的 Ngnix 實例,那就直接使用。只要記得去配置 Kibana,讓 Ngnix server 可以訪問(你可能需要在 /opt/kibana/config/kibana.yml 改變 host 的值為你的 Kibana server 的 private IP 或者 hostname)。此外,建議您啟用 SSL / TLS。

用 apt 安裝 Ngnix 和 Apache2-utils:

sudo apt-get install nginx apache2-utils

htpasswd 創建一個 admin 用戶,叫 Kibanaadmin(根據自己喜好命名),用來訪問 Kibana Web 界面:

sudo htpasswd -c /etc/nginx/htpasswd.users kibanaadmin

在命令提示終端輸入密碼。記住用戶名和密碼,稍候你需要用它來訪問Kibana Web界面。

現在用你喜歡的編輯器打開 Nginx 的默認伺服器模塊。我們將用 vi

sudo vi /etc/nginx/sites-available/default

刪除文件中的內容,複製下面的代碼塊到文件中。請確保 server_name 和你的 server_name 匹配:
/etc/nginx/sites-available/default
server {
listen 80;
server_name example.com;
auth_basic "Restricted Access";
auth_basic_user_file /etc/nginx/htpasswd.users;
location / {
proxy_pass http://localhost:5601;
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;
}
}

保存,退出。這個 Nginx 的配置通過監聽 localhost5601,讓你的伺服器的 HTTP 流量直接到 Kibana 應用程序。此外,Nginx 的將使用我們前面創建的 htpasswd.users 文件,也會要求基本身份驗證。

現在重啟 Nginx 讓之前的改變生效:

sudo service nginx restart

Kibana 現在是可訪問的,通過 FQDN 也就是你的 ELKServer 公共 IP 地址。http://elk_server_public_ip/ 如果你在瀏覽器中訪問這個地址,然後輸入 「kibanaadmin」 驗證。這樣,你就可以看到 Kibana 的歡迎界面,在這裡它會要求你配置 index 類型。不要管那麼多拉,我們待會再來研究,先回去安裝其他組件。

安裝 Logstash

Logstash 軟體包和 Elasticsearch 的在同一個版本庫,之前我們已經添加了這個公共密鑰。所以,直接創建 Lostash 的資源列表:

echo 'deb http://packages.elastic.co/logstash/2.2/debian stable main' | sudo tee /etc/apt/sources.list.d/logstash-2.2.x.list

更新 apt 包資料庫:

sudo apt-get update

安裝 Logstash

sudo apt-get install logstash

安裝好了!但是還沒有配置。

生成 SSL 證書

因為我們是使用 FilebeatClient Server 傳輸日誌到伺服器 ELK Server,所以需要創建一個 SSL 證書和密鑰對。Filebeat 用該證書驗證 ELK Server 的身份。創建將存儲證書和私鑰使用目錄:

sudo mkdir -p /etc/pki/tls/certs
sudo mkdir /etc/pki/tls/private

你有生成 SSL 證書的兩種選擇。如果你有一個 DNS 設置,讓您的客戶端伺服器解析伺服器 ELK 的 IP 地址,使用選項2。否則,使用選項1,將允許您使用 IP 地址。

選項1IP 地址

如果你沒有 DNS 設置——它允許你收集 log 的伺服器,解析你的 ELK Server 的 IP 地址——你必須添加 ELK Server 的 private IP 地址到的 SSL 證書的 SubjectAltName(SAN)。要做這一步,打開 OpenSSL 的配置文件:
sudo vi /etc/ssl/openssl.cnf

找到文件中[ v3_ca ]板塊,在下面添加這一行(替換 ELK Server 的 private IP 地址):

subjectAltName = IP: ELK_server_private_IP

保存,退出。

現在砸死相應位置產生 SSL 證書和私鑰(在 /etc/PKI/TLS/),使用下面的命令:

cd /etc/pki/tls
sudo openssl req -config /etc/ssl/openssl.cnf -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

該 logstash-forwarder.crt 文件將被複制到所有將日誌發送到 Logstash 的伺服器上——稍候,我們會做這一步。讓我們繼續完成 Logstash 配置。如果您使用了此選項,跳過選項2併到配置 Logstash 這一步。

選項2

如果你有個人網路的 DNS 設置,你應創建一個包含 ELK Server 的 private IP 地址的 A 記錄——這個域名將在接下來的命令中使用,來生成 SSL 證書。或者,你可以用一個指向該伺服器的公共 IP 地址的記錄。只要確保你的伺服器(收集日誌的伺服器)將能夠解析域名到你的 ELK Server。

現在生成 SSL 證書和私鑰,,在相應的位置(在

cd /etc/pki/tls; sudo openssl req -subj '/CN=ELK_server_fqdn/' -x509 -days 3650 -batch -nodes -newkey rsa:2048 -keyout private/logstash-forwarder.key -out certs/logstash-forwarder.crt

logstash-forwarder.crt 文件將被複制到所有將日誌發送到 Logstash 的伺服器上——稍候,我們會做這一步。讓我們繼續完成 Logstash 配置。

配置 Logstash

Logstash 配置文件是 JSON 格式的,放在 /etc/logstash/conf.d

創建一個叫 02-beats-input.conf 的配置文件,並配置 "filebeat" 的input:

sudo vi /etc/logstash/conf.d/02-beats-input.conf

輸入下面的配置信息:

02-beats-input.conf
input {
beats {
port => 5044
ssl => true
ssl_certificate => "/etc/pki/tls/certs/logstash-forwarder.crt"
ssl_key => "/etc/pki/tls/private/logstash-forwarder.key"
}
}

保存,退出。指定的 beats 輸入會監聽 TCP 埠5044,它將使用我們前面創建的 SSL 證書和私鑰。

現在來創建 10-syslog-filter.conf 配置文件,在這裡面我們會添加 syslog 信息的 filter:

sudo vi /etc/logstash/conf.d/10-syslog-filter.conf

輸入下面的 syslog filter 配置信息:

10-syslog-filter.conf
filter {
if [type] == "syslog" {
grok {
match => { "message" => "%{SYSLOGTIMESTAMP:syslog_timestamp} %{SYSLOGHOST:syslog_hostname} %{DATA:syslog_program}(?:\[%{POSINT:syslog_pid}\])?: %{GREEDYDATA:syslog_message}" }
add_field => [ "received_at", "%{@timestamp}" ]
add_field => [ "received_from", "%{host}" ]
}
syslog_pri { }
date {
match => [ "syslog_timestamp", "MMM  d HH:mm:ss", "MMM dd HH:mm:ss" ]
}
}
}

保存,退出。這個 filter 查詢 syslog 類型的 logs(通過 Filebeat),而且它會使用 grok 來解析傳入的 syslog 日誌,使之結構化和可查詢。

最後,我們創建 30-elasticsearch-output.conf 配置文件:
sudo vi /etc/logstash/conf.d/30-elasticsearch-output.conf

輸入下面的 output 配置信息:

/etc/logstash/conf.d/30-elasticsearch-output.conf
output {
elasticsearch {
hosts => ["localhost:9200"]
sniffing => true
manage_template => false
index => "%{[@metadata][beat]}-%{+YYYY.MM.dd}"
document_type => "%{[@metadata][type]}"
}
}

保存,退出。這個 output 主要是配置 Logstash 去存儲運行在 localhost:9200上的Elasticsearch beat 數據,這裡有一個命名要求,由被使用的 beat 來命名(在這個情況下是 filebeat)。

如果你想給其他使用 Filebeat input 的 application 添加 filters,請確保命名文件讓它們在 input 和 output 的配置之間排序(即,02-和30-之間)。

測試 Logstash 的配置信息:

sudo service logstash configtest

顯示 Configuration OK 是對的,否則是錯誤的。請查看錯誤信息以確定 Logstash 配置信息那裡出錯了。

重啟 Logstash,並啟動,讓改變的配置信息生效:

sudo service logstash restart
sudo update-rc.d logstash defaults 96 9

現在,我們來載入樣例 Kibana 儀錶盤。

載入 Kibana儀錶盤

Elastic 提供了幾種 Kibana 的儀錶盤樣例和 beat 索引模式,來幫助你開始使用 Kibana。雖然在我們的教程中不會使用儀錶盤,但是不管怎麼我們都可以用它包含的 Filebeat 和索引模式載入它們。

首先,下載儀錶盤樣例,存到你的 home 目錄:

cd ~
curl -L -O https://download.elastic.co/beats/dashboards/beats-dashboards-1.1.0.zip

安裝 unzip 包:

unzip beats-dashboards-*.zip

然後載入儀錶盤樣例、可視化和 beat 索引模式到 Elasticsearch:

cd beats-dashboards-*
./load.sh

這些是剛才我們載入的索引模式:

  • [packetbeat-]YYYY.MM.DD
  • [topbeat-]YYYY.MM.DD
  • [filebeat-]YYYY.MM.DD
  • [winlogbeat-]YYYY.MM.DD

當我們使用 Kibana,選擇 Filebeat 索引模式作為我們的默認模式。

載入 Filebeat 索引模版到 Elasticsearch

因為我們計劃使用 Fliebeat 傳輸 logs 到 Elasticsearch,所以我們因該載入 Filebeat 索引模版。該索引模板將配置 Elasticsearch 以一種智能的方式來分析傳入的 Filebeat 信息。

首先,下載 Filebeat 索引模版到 home 目錄:

cd ~
curl -O https://gist.githubusercontent.com/thisismitch/3429023e8438cc25b86c/raw/d8c479e2a1adcea8b1fe86570e42abab0f10f364/filebeat-index-template.json

然後載入它:

curl -XPUT 'http://localhost:9200/_template/filebeat?pretty' -d@filebeat-index-template.json

如果模板正確載入,你會看到這樣的消息:

Output:{  "acknowledged" : true}

現在,我們的 ELK Server 已準備好接收 Filebeat 數據,讓我們到每個 Client Server 上設置 Filebeat。

設置 Filebeat(添加 Client Servers

在你要發送日誌到 Logstash ELK Server 的所有 Ubuntu 或 Debian 的 server 做這一步。有關在基於 Red Hat Linux 發行版(RHEL 例如,CentOS 的,等等)安裝 Filebeat 說明,請參閱在 CentOS 設置 Filebeat(添加客戶端伺服器)部分

複製 SSL 證書

在你的 ELK Server,複製 SSL 證書——這個教程之前創建的——到你的 Client Sever(用你自己的登錄信息替換下面的 client server's address):

scp /etc/pki/tls/certs/logstash-forwarder.crt user@client_server_private_address:/tmp
提供您的登錄憑據後,確保證書複製成功。在 client servers 和 ELK Server 之間的通信,這是必須要的。

現在,我們將安裝 Topbeat 包。

安裝 Filebeat

Client Server,創建 Beats 資源列表:

echo "deb https://packages.elastic.co/beats/apt stable main" |  sudo tee -a /etc/apt/sources.list.d/beats.list

它也和 Elasticsearch 使用相同的 GPG 密鑰,可以使用下面的命令進行安裝:

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add –

然後,安裝 Filebeat 包:

sudo apt-get update
sudo apt-get install filebeat

安裝好了,接下來來配置。

配置 Filebeat

現在,我們將配置 Filebeat 連接到 ELK Server 上的 Logstash。本節將引導你完成修改 Filebeat 自帶示例的配置文件。當你完成這些步驟,你應該有一個看起來像這樣的文件。

在 Client Server,創建和修改 Filebeat 配置文件:

sudo vi /etc/filebeat/filebeat.yml

注意:Filebeat 的配置文件是 YAML 格式,這意味著縮進是非常重要的!一定要使用相同數量的空格。

接近文件的頂部,你會看到 prospectors 部分,這是你可以定義指定 prospectors 哪些日誌文件可以傳送,以及他們應該如何處理。每個 prospectors 用「-」標明:

filebeat.yml excerpt 1 of 5
...
paths:
- /var/log/auth.log
- /var/log/syslog
#        - /var/log/*.log
...

然後,找到指定 DOCUMENT_TYPE: ,取消注釋該行並改變其值設置為「syslog」。它修改後是這樣的:

...
document_type: syslog
...

這指定 prospectors 的日誌類型是 syslog(這是我們 Logstash filter 正在尋找的類型)。

如果你想發送其他的文件到你的 ELK 伺服器,或對 Filebeat 如何處理你的日誌進行任何更改,隨意修改或添加 prospectors 條目。

接下來,在 output 部分,找到 elasticsearch: ,這表明 Elasticsearch 輸出部分(我們不打算使用)。刪除或注釋掉整個 Elasticsearch output 部分(最多,到 #logstash:)行。

找到注釋掉的 Logstash 輸出部分——#logstash:,取消注釋(刪除前面的#)。在本節中,取消hosts[localhost5044]行注釋。改變 localhost 為你的 ELK 伺服器的 private IP 地址(或主機名):

### Logstash as output
logstash:
# The Logstash hosts
hosts: ["ELK_server_private_IP:5044"]

這將配置 Filebeat 連接到 ELK Server 上的 Logstash 通過5044埠(我們指定的 Logstash 輸入的埠)。

直接在 hosts 下面,添加這一行:

bulk_max_size: 1024

接著,找到 tls 部分,取消注釋;並取消 certificate_authorities,注釋,改變它的值為["/etc/pki/tls/certs/logstash-forwarder.crt"]:

...
tls:
# List of root certificates for HTTPS server verifications
certificate_authorities: ["/etc/pki/tls/certs/logstash-forwarder.crt"]

配置 Filebeat 使用我們的 ELK Server 上創建的 SSL 證書。

保存、退出。

重啟 Fliebeat

sudo service filebeat restart
sudo update-rc.d filebeat defaults 95 10

如果你不確定你的文件配置是否爭取,可以查看這裡

測試 Filebeat 安裝

如果您的 ELK stack 正確安裝,Filebeat(客戶端伺服器上)應該傳送 log 到 ELK Server 上的 Logstash。 Logstash 應載入 Filebeat 數據到 Elasticsearch 以這樣一個時間戳 filebeat-YYYY.MM.DD。

在你的 ELK Server,驗證 Elasticsearch 確實通過 Filebeat 查詢索引接收的數據:

curl -XGET 'http://localhost:9200/filebeat-*/_search?pretty'

你應該會看到這樣的輸出:

Sample Output:
...
{
      "_index" : "filebeat-2016.01.29",
      "_type" : "log",
      "_id" : "AVKO98yuaHvsHQLa53HE",
      "_score" : 1.0,
      "_source":{"message":"Feb  3 14:34:00 rails sshd[963]: Server listening on :: port 22.","@version":"1","@timestamp":"2016-01-29T19:59:09.145Z","beat":{"hostname":"topbeat-u-03","name":"topbeat-u-03"},"count":1,"fields":null,"input_type":"log","offset":70,"source":"/var/log/auth.log","type":"log","host":"topbeat-u-03"}
}
...

如果總點擊數(hits)輸出結果0,Elasticsearch 沒有在你搜索的索引下載入任何日誌,你應該檢查你的設置。如果你收到了預期的輸出,繼續下一步。

連接到 Kibana

當您完成所有要收集日誌的伺服器的 Filebeat 設置,讓我們來看看我們之前安裝的 Web 界面 Kibana。

在 Web 瀏覽器中,轉到 FQDN 或 ELK Server 的公共 IP 地址。使用「kibanaadmin」身份進入後,你會看到一個頁面,提示您配置默認索引圖案:

https://assets.digitalocean.com/articles/elk/1-filebeat-index.gif
繼續,然後從索引模式菜單(左側)中選擇 [filebeat]-YYY.MM.DD,然後單擊星(設置為默認索引)按鈕設置 Filebeat 指數為默認值。

現在點擊頂部導航欄中的鏈接發現。默認情況下,這將顯示在過去的15分鐘所有的日誌數據。您應該看到日誌事件直方圖,下面日誌消息:

現在,不會有在那裡多,因為你只是從客戶端伺服器收集系統日誌。在這裡,你可以搜索和瀏覽你的日誌。您還可以自定義儀錶板。

嘗試這些操作:

  • 搜索「root」來看看是否有人嘗試用root身份登錄你的伺服器;
  • 搜索特殊的 hostname;
  • 通過對直方圖選擇一個區域或從上面的菜單中改變時間幀;
  • 點擊下面的柱狀圖信息,看數據是如何被過濾的。

總結

現在你的 syslogs 通過 ElasticsearchLogstash 集中化了,並且你可以通過 Kibana 查看它們。到這裡,你應該有一個集中化重要 logs 很好的開始了。請記住你可以發送各種各樣的 log 或者是索引數據到 Logstash,但是如果是使用 grok 解析和結構化的數據會更加有用。

為了提升 ELK stack,你應該考慮使用 Logstash 收集和過濾其他日誌,並創建 Kibana 儀錶板 。您可能還需要通過使用TopbeatELK stack 收集系統指標。所有這些主題均包含在本系列的其他教程中。

 

LinuxStory 譯文鏈接:http://www.linuxstory.org/how-to-install…n-ubuntu-14-04/

原文鏈接:https://www.digitalocean.com/community/tutorials/how-to-install-elasticsearch-logstash-and-kibana-elk-stack-on-ubuntu-14-04

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
喜歡謀略,善良有愛心;愛古裝劇,追求劇中的江湖義氣和兄弟情義。一身男兒義氣,卻又缺點男兒俠氣!常以萌妹子角色混跡江湖!

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:開源軟體

    開源軟體

    嵌入式 Linux 的瑞士軍刀:BusyBox

    上期文章中,筆者向各位介紹了 musl,一個 Glibc 的替代方案,它的主要優勢體現在更加整潔的代碼、更小的二進位體積和更優秀的靜態鏈接支持。而本期文章的主角:BusyBox 則是 GNU Core […]
    開源項目

    Pwnagotchi 開箱教程

    Pwnagotchi 是一個由 Bettercap 驅動的 A2C 的 「AI」,它能夠從周圍的 WiFi 環境中學習,以最大限度地利用它捕獲的可破解 WPA 密鑰材料,該材料將作為可被 hashcat 破解的 PCAP 文件收集在磁碟上。 簡單來說,Pwnagotchi ...
    開源軟體

    光速上手C++20協程

    今天來學習下怎麼使用基於C++20設計開發的協程框架async_simple(https://github.com/alibaba/async_simple)。async_simple是阿里巴巴開源的輕量級C++非同步框架。提供了基於C++20無棧協程(Lazy),有棧協程(Uthread)以及Future/Promise等非同步組件。連續兩年經歷天貓雙十一磨礪,承擔了億級別流量洪峰,具備高性能和高穩定性。