本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用亞馬遜OpenSearch日誌監控CloudWatch日誌
Amazon Ser OpenSearch vice 透過 Amazon OpenSearch 日誌公開以下CloudWatch日誌:
搜尋慢速日誌、索引慢速日誌和錯誤日誌對於疑難排解效能和穩定性問題非常有用。稽核日誌會追蹤使用者活動,以符合規範。所有日誌都預設為停用狀態。如果啟用,則套用標準 CloudWatch 定價
注意
錯誤日誌僅適用於OpenSearch和 Elasticsearch 5.1 版和更高版本。慢速日誌則適用於所有版本OpenSearch和 Elasticsearch 版本。
對於日誌,OpenSearch 使用 Apache Log4j 2TRACE
、DEBUG
、INFO
、WARN
、ERROR
和 FATAL
。
如果啟用錯誤記錄檔,OpenSearchService 會發佈WARN
ERROR
、和的記錄FATAL
行CloudWatch。OpenSearchService 也會發佈DEBUG
等級的幾個例外狀況,包括下列項目:
-
org.opensearch.index.mapper.MapperParsingException
-
org.opensearch.index.query.QueryShardException
-
org.opensearch.action.search.SearchPhaseExecutionException
-
org.opensearch.common.util.concurrent.OpenSearchRejectedExecutionException
-
java.lang.IllegalArgumentException
在許多情況下,錯誤日誌可以協助排除故障,包括:
-
Painless 指令碼編譯問題
-
無效查詢
-
索引問題
-
快照故障
-
索引狀態管理遷移失敗
啟用日誌發佈 (主控台)
Ser OpenSearch vice 主控台是將日誌發佈到CloudWatch.
啟用將日誌發佈到 CloudWatch (主控台)
-
前往 https://aws.amazon.com
,然後選擇 Sign In to the Console (登入主控台)。 -
在分析下,選擇亞馬遜OpenSearch服務。
-
選取您要更新的網域。
-
在 Logs (日誌) 索引標籤上,選取日誌類型,然後選擇 Enable (啟用)。
-
建立新的CloudWatch日誌群組或選擇現有日誌群組。
注意
您若打算啟用多個日誌,建議發佈每一個到它自己的日誌群組。這個分隔有助於更輕鬆掃描日誌。
-
選擇包含適當許可權的存取政策,或使用主控台提供的 JSON 建立政策:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "
cw_log_group_arn
:*" } ] }建議您新增
aws:SourceAccount
和aws:SourceArn
條件索引鍵至政策,保護自己免受混淆代理人問題的困擾。來源帳戶是網域的擁有者,且來源 ARN 是網域 ARN。您的網域必須位於服務軟體 R20211203 或更新版本上,才能新增這些條件索引鍵。例如,您可以將下列條件區塊新增至政策:
"Condition": { "StringEquals": { "aws:SourceAccount": "
account-id
" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region
:account-id
:domain/domain-name
" } }重要
CloudWatch日誌支援各區域 10 個資源政策。如果您打算為數個 OpenSearch Service 網域啟用日誌,您應該建立和重複使用更廣泛的政策,其包含多個日誌群組的更廣泛政策,以避免達到此限制。如需更新政策的相關步驟,請參閱啟用日誌發佈 (AWS CLI)。
-
選擇 啟用 。
網域變更的狀態會從 Active (作用中) 變成 Processing (處理)。啟用日誌發佈之前,必須使狀態變回 Active (作用中)。這項變更通常需要 30 分鐘,但可能需要更長的時間,視您的網域組態而定。
如果您已啟用其中一個慢速日誌,請參閱設定OpenSearch慢速日誌的日誌閾值。如果啟用稽核日誌,請參閱步驟 2:開啟 OpenSearch 儀表板中的稽核記錄。如果您只啟用了錯誤日誌,則不需要執行任何其他設定步驟。
啟用日誌發佈 (AWS CLI)
可以啟用日誌發佈之前,您需要一個 CloudWatch 日誌群組。如果還沒有日誌群組,您可以使用下列命令建立一個:
aws logs create-log-group --log-group-name
my-log-group
輸入下一個命令來尋找日誌群組的 ARN,然後記下來:
aws logs describe-log-groups --log-group-name
my-log-group
現在您可以提供 OpenSearch Service 許可以寫入日誌群組。您接近命令最後,必須提供日誌群組的 ARN:
aws logs put-resource-policy \ --policy-name my-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents","logs:CreateLogStream"],"Resource": "
cw_log_group_arn
:*"}]}'
重要
CloudWatch日誌支援各區域 10 個資源政策。如果您打算對數個 OpenSearch Service 網域啟用慢速日誌,您應該建立和重複使用更廣泛的政策,其包含多個日誌群組的更廣泛政策,以避免達到此限制。
如果您稍後需要檢閱此政策,請使用 aws logs
describe-resource-policies
命令。若要更新此政策,請使用新的政策文件發出相同的 aws
logs put-resource-policy
命令。
最後,您可以使用 --log-publishing-options
選項,以啟用發佈。選項的語法對於 create-domain
和 update-domain-config
命令都是相同的。
參數 | 有效值 |
---|---|
--log-publishing-options |
SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn= |
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn= |
|
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn= |
|
AUDIT_LOGS={CloudWatchLogsLogGroupArn= |
注意
您若打算啟用多個日誌,建議發佈每一個到它自己的日誌群組。這個分隔有助於更輕鬆掃描日誌。
範例
以下範例可讓指定的網域發佈搜尋和索引慢速日誌:
aws opensearch update-domain-config \ --domain-name my-domain \ --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"
若要停止發佈到 CloudWatch,可使用 Enabled=false
執行相同命令。
如果您已啟用其中一個慢速日誌,請參閱設定OpenSearch慢速日誌的日誌閾值。如果啟用稽核日誌,請參閱步驟 2:開啟 OpenSearch 儀表板中的稽核記錄。如果您只啟用了錯誤日誌,則不需要執行任何其他設定步驟。
啟用日誌發佈 (AWS 開發套件)
在可以啟用日誌發佈之前,必須先建立一個CloudWatch日誌群組,取得其 ARN,並提供 OpenSearch Service 許可以寫入到其中。相關的操作全記錄在 Amazon CloudWatch Logs API 參考中:
-
CreateLogGroup
-
DescribeLogGroup
-
PutResourcePolicy
您可以使用 AWS 開發套件
開AWS發套件 (Android 及 iOS 開發套件除外) 支援 Amazon Ser OpenSearch vice API 參考中定義的所有操作,包括和的--log-publishing-options
CreateDomain
選項。UpdateDomainConfig
如果您已啟用其中一個慢速日誌,請參閱設定OpenSearch慢速日誌的日誌閾值。如果您只啟用了錯誤日誌,則不需要執行任何其他設定步驟。
啟用日誌發佈 (CloudFormation)
在此範例中,我們使用CloudFormation此範例建立稱為的日誌群組opensearch-logs
,指派適當的許可,然後建立一個網域,對其啟用應用程式日誌、搜尋慢速日誌和索引慢速日誌的日誌發佈。
在可以啟用日誌發佈之前,您需要建立CloudWatch日誌群組︰
Resources: OpenSearchLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName:
opensearch-logs
Outputs: Arn: Value: 'Fn::GetAtt': - OpenSearchLogGroup - Arn
範本輸出日誌群組的 ARN。在本案例中,ARN 為 arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs
。
使用 ARN 會建立一項資源政策,賦予 OpenSearch Service 許可以寫入日誌群組:
Resources: OpenSearchLogPolicy: Type: AWS::Logs::ResourcePolicy Properties: PolicyName:
my-policy
PolicyDocument: "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Sid\": \"\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"es.amazonaws.com\"}, \"Action\":[ \"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Resource\": \"arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs:*\"}]}"
最後,建立以下CloudFormation堆疊,它會產生已啟用日誌發佈的 OpenSearch Service 網域。存取政策允許 AWS 帳戶 的使用者對網域發出所有 HTTP 請求。
Resources: OpenSearchServiceDomain: Type: "AWS::OpenSearchService::Domain" Properties: DomainName:
my-domain
EngineVersion: "OpenSearch_1.0" ClusterConfig: InstanceCount: 2 InstanceType: "r6g.xlarge.search" DedicatedMasterEnabled: true DedicatedMasterCount: 3 DedicatedMasterType: "r6g.xlarge.search" EBSOptions: EBSEnabled: true VolumeSize: 10 VolumeType: "gp2" AccessPolicies: Version: "2012-10-17" Statement: Effect: "Allow" Principal: AWS: "arn:aws:iam::123456789012
:user/es-user" Action: "es:*" Resource: "arn:aws:es:us-east-1:123456789012
:domain/my-domain
/*" LogPublishingOptions: ES_APPLICATION_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012
:log-group:opensearch-logs" Enabled: true SEARCH_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012
:log-group:opensearch-logs" Enabled: true INDEX_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012
:log-group:opensearch-logs" Enabled: true
如需詳細的語法資訊,請參閱 AWS CloudFormation 使用者指南中的日誌發佈選項。
設定OpenSearch慢速日誌的日誌閾值
根據預設,OpenSearch 停用慢速查詢日誌。當您將慢速查詢日誌發佈到 CloudWatch,您仍必須指定每一個 OpenSearch 索引的記錄閾值。這些閾值精確定義該記錄哪些內容、日誌層級為何等等。
您可以透過 OpenSearch REST API 指定這些設定:
PUT
domain-endpoint
/index
/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }
若要測試慢速查詢日誌已發佈成功,請考慮開始時先使用非常低的值,以確認日誌在 CloudWatch 中,然後增加閾值到更實用的層級。
如果日誌未出現,請檢查下列各項:
-
CloudWatch 日誌群組是否存在? 檢查 CloudWatch 主控台。
-
OpenSearchService 是否擁有寫入日誌群組的許可? 檢查 InSearch OpenSearch Service 主控台。
-
OpenSearchService 網域是否設定為發佈到日誌群組? 檢查OpenSearch服務主控台、使用AWS CLI
describe-domain-config
選項,或DescribeDomainConfig
使用其中一個 SDK 呼叫。 -
OpenSearch 記錄閾值是否低到您的請求超出它們? 若要查看您的索引閾值,請使用下列命令:
GET
domain-endpoint
/index
/_settings?pretty
如果您想要停用索引的慢速日誌,請傳回變更為其預設值 -1
的任何閾值。
CloudWatch使用 OpenSearch Service 主控台停用發佈到其中或AWS CLI不會停OpenSearch止產生日誌;它只會停止發佈這些日誌。如果您不再需要慢速日誌,請務必檢查索引設定。
檢視 日誌
檢視 CloudWatch 中的應用程式和慢速查詢日誌,和檢視其他任何 CloudWatch 日誌一樣。如需詳細資訊,請參閱 Amazon CloudWatch 日誌使用者指南中的檢視日誌資料。
以下是檢視日誌的一些考量事項:
-
OpenSearchService 只發佈每一行的前 255,000 個字元到CloudWatch. 任何剩餘內容會被截斷。對於稽核日誌,每個訊息為 10,000 個字元。
-
在中CloudWatch,記錄資料流名稱的尾碼為
-index-slow-logs
、、和-search-slow-logs
-application-logs
,-audit-logs
以協助識別其內容。