이 문서는 출시된 Jira Software 10.4.x 릴리즈 노트를 공유하기 위해 작성되었다.
하이라이트
호환 가능한 어플리케이션
자동화 대기열 지원 개선
ADMIN
자동화 대기열이 커지면 규칙 실행이 지연되거나 실행되지 않을 수 있습니다. 자동화 대기열의 모니터링 기능을 향상시키기 위해 새로운 알림, 메트릭 및 진단 REST 엔드포인트를 도입합니다.
- 이제 자동화 대기열에 있는 처리되지 않고 청구되지 않은 메시지가 구성 가능한 임계값(기본값은 1시간)을 초과하면 진단 페이지 에 알림이 표시됩니다.
- 대기열에 있는 가장 오래된 처리되지 않고 클레임되지 않은 메시지의 기간을 반영하는
새로운 계측 및 JMX 메트릭(automation.queue.earliest.unprocessed.message.age.secs.max_stale_10mins
)을 볼 수 있습니다. - 새로운 API 엔드포인트를 사용하면 대기열 증가에 기여하는 이벤트와 규칙을 분석할 수 있습니다.
- 이벤트 유형별로 자동화 대기열의 내용을 검색하고 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/automation-queue/by-event-type
입니다. - 규칙별로 자동화 대기열의 내용을 검색하고 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/automation-queue/by-rule
입니다. - 지정된 기간 동안의 감사 로그를 분석하고 이벤트 소스별로 그룹화하는 API는 GET
/rest/cb-automation/latest/insight/audit/by-event-source
입니다.
암호화 키를 로테이션
ADMIN
Jira는 이미 기본 비밀 암호화를 통해 일반 텍스트 비밀을 자동으로 암호화합니다. 이제 암호화 키 로테이션을 통해 시스템을 더욱 보호할 수 있습니다.
API 호출을 사용하여 새 키로 기존 비밀을 다시 암호화하고 비활성 키를 관리합니다. 이 추가 보안은 단일 노드 및 클러스터 환경 모두에서 사용할 수 있습니다.
이슈 링크 유형의 순서를 커스텀
ADMIN
이제 관리자는 이슈 링크 유형의 순서를 사용자 정의할 수 있습니다. 두 가지 정렬 방법을 도입했습니다.
- 드래그 앤 드롭: 이슈 링크 유형 표에서 직접 순서를 재정렬
- 알파벳순 정렬: 드롭다운 메뉴를 사용해 오름차순이나 내림차순으로 정렬
Jira Stats 로깅 위치 변경
ADMIN
Jira 10.4.0 부터 Jira Stats가 atlassian-jira.log
대신 atlassian-jira-stats.log
에 기록됩니다. 이는 log4j2.xml
속성에 의해 구성됩니다.
Splunk, Grafana, Logstash, Kibana 또는 Jira Stats 에 의존하는 다른 도구는 새 파일 위치에 맞게 조정 해야 합니다.
log4j2.xml
구성 파일이 재정의된 경우 수동으로 조정합니다.
<JiraHomeAppender name="jirastatslog" fileName="atlassian-jira-stats.log" filePattern="atlassian-jira-stats.log.%i"> <PatternLayout alwaysWriteExceptions="false"> <Pattern>${StackTraceFilteringPattern}</Pattern> </PatternLayout> <Policies> <SizeBasedTriggeringPolicy size="20480 KB"/> </Policies> <DefaultRolloverStrategy fileIndex="min" max="10"/> </JiraHomeAppender> (...) <!-- #####################################################--> <!-- # Jira Stats logging--> <!-- #####################################################--> <!-- # on INFO logs queue stats per node, on DEBUG logs queue stats per queue--> <Logger name="com.atlassian.jira.cluster.distribution.localq.LocalQCacheManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.cluster.dbr.DBRSenderStats$TotalAndSnapshotDBRSenderStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.cluster.dbr.DBRReceiverStats$TotalAndSnapshotDBRReceiverStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.WriterWithStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.versioning.EntityVersioningManagerWithStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.issue.index.IndexingStatsManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.MonitoringIndexWriter" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.ReIndexStatsLogger" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.ReplicationStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.plugin.PluginTransactionListener" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.propertyset.TotalAndSnapshotPropertyEntryStoreStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.ha.TotalAndSnapshotIndexRepairStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.QueueingIndexStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <!-- # Cluster Authentication stats--> <Logger name="com.atlassian.jira.cluster.distribution.localq.rmi.auth.ClusterAuthStatsManager" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.index.stats.TotalAndSnapshotIndexSearcherStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger> <Logger name="com.atlassian.jira.util.stats.JiraStats" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger>
새 사용자 정의 JiraStat를 추가하고 JiraStats.create(…)를 사용하지 않는 경우 다음과 같이 이 클래스의 사용자 정의 로거도 추가해야 합니다.
<Logger name="logger_name_usually_a_package_and_classname" level="INFO" additivity="false"> <AppenderRef ref="jirastatslog"/> </Logger>
새로운 검색 API 출시
ADMIN
Atlassian은 검색 툴링에 대한 보다 독립적인 옵션의 기반을 마련하고 있으며, 추상화 계층을 추가하는 것으로 시작합니다.
이 변경 사항은 향후 OpenSearch 지원을 가능하게 하는 데 중요합니다. 새로운 추상화 계층은 새로운 검색 API를 도입합니다.
검색 및 인덱싱 성능은 기존 Lucene 구현과 일관되게 유지됩니다. 이 변경 사항은 또한 공개 API에서 Lucene을 제거하려는 계획의 시작을 알립니다.